2014-01-19 2 views
1

Я начинаю в MySQL и использую примерную базу данных с таблицей офисов, в которой перечислены все офисы в разных штатах. Я хочу подсчитать количество штатов, в которых работают офисы, исключая одно государство с двумя офисами.Подсчет различных записей в MySQL

Я знаю, что

SELECT DISTINCT state 
FROM offices 
WHERE state NOT IN('NULL'); 

вернет мне все различные состояния (4 всего), но я хочу, чтобы подсчитать их. Я попытался

SELECT COUNT(*) AS unique_states 
FROM offices 
WHERE state IN(
SELECT DISTINCT state 
FROM offices 
WHERE state NOT IN('NULL')); 

, но это по-прежнему возвращает 5, несмотря на то, должно быть только 4.

Любая помощь?

+0

Что такое 'NULL'? Рассмотрите возможность предоставления надлежащих DDL и/или sqlfiddle ВМЕСТЕ С ЖЕСТКОЙ РЕЗУЛЬТАТОМ – Strawberry

ответ

1

Для этого вам не нужно использовать вложенный запрос. Кроме того, я думаю, вы хотите использовать вместо state NOT IN('NULL').

Попробуйте следующий запрос:

SELECT COUNT(DISTINCT state) 
FROM offices 
WHERE state IS NOT NULL; 
+0

спасибо! Это имеет большой смысл! – amaricleroberts

0

Вы можете сделать это, используя суб/вложенный запрос

SELECT COUNT(*) 
FROM 
    (SELECT DISTINCT state 
    FROM offices 
    WHERE state NOT IN('NULL')) AS `distinct_states` 
Смежные вопросы