mySQL выбирает строку только если count() как col1 <> col2

Я использую следующий SQL-оператор:

SELECT Col1, count(*) as Col2, Col3
FROM table1
WHERE WeekEnding = '08/26/2012' 
GROUP BY Col1

Получить

Col1   Col2  Col3
 NY     2     2
 FL     1     2
 TX     1     2
 NJ     1     2
 WA     2     2
 DE     1     3
 MA     4     4
 AL     3     3

Как я могу исключить записи, где COL2 = COL3, поэтому я получаю.

Col1   Col2  Col3
 FL     1     2
 TX     1     2
 NJ     1     2
 DE     1     3

2 ответа

Решение

Вы добавляете HAVING - having работает после group готово. Where работает до group,

SELECT Col1, count(*) as Col2, Col3
FROM table1
WHERE WeekEnding = '08/26/2012' 
GROUP BY Col1
HAVING Col2 != Col3

Примечание. Вы группируете по Col1, но не по Col3 - это недопустимо, поскольку вы запрашиваете Col3 в выходных данных.

Добавьте его в свой HAVING пункт

SELECT Col1, count(*) as Col2, Col3
FROM table1
WHERE WeekEnding = '08/26/2012' 
GROUP BY Col1
HAVING (count(*) <> col3)
Другие вопросы по тегам