SQL SELECT: значение, которое встречается> 1 - PullRequest
1 голос
/ 30 июля 2010

Я пытаюсь выбрать дубликаты из этой таблицы:

snr zip
01 83
02 82
03 43
04 28

Ожидаемый результат - просто пустая таблица.Потому что он не получил дубликатов.

Я пытался с этим запросом:

SELECT snr, zip
FROM student
GRUOP BY snr
HAVING  (COUNT(zip) > 1)

Но он говорит, что синтаксис является ошибкой, и что я пытаюсь запросить статистические функции, и т. Д...

Ответы [ 2 ]

6 голосов
/ 30 июля 2010

Похоже, вам нужно либо удалить zip из столбцов SELECT, либо обернуть его в статистическую функцию, например COUNT(zip):

SELECT   snr, COUNT(zip)
FROM     student
GROUP BY snr
HAVING   (COUNT(zip) > 1)

Также проверьтеout @ OMG Ponies's answer для дальнейших предложений.

5 голосов
/ 30 июля 2010

Использование:

  SELECT snr, zip
    FROM student
GROUP BY snr, zip
  HAVING COUNT(DISTINCT zip) > 1

Стандартный SQL требует, чтобы в GROUP BY были определены столбцы в предложении SELECT, которые не заключены в агрегатные функции (COUNT, MIN, MAX и т. Д.).Однако MySQL и SQLite допускают пропуск столбцов .

Кроме того, используйте COUNT (DISTINCT, иначе вы рискуете получить ложные срабатывания.

...