SQL SELECT:出现的值> 1

时间:2010-07-30 17:29:31

标签: sql select duplicates having

我正在尝试从此表中选择重复项:

snr zip
01 83
02 82
03 43
04 28

预期结果只是空表。因为它没有重复。

我尝试过这个查询:

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

但是它说语法是错误的,我正在尝试查询聚合函数等。

2 个答案:

答案 0 :(得分:6)

您似乎需要从zip列中删除SELECT,或者将其包含在聚合函数中,例如COUNT(zip)

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

另请查看@OMG Ponies's answer以获取进一步的建议。

答案 1 :(得分:5)

使用:

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

标准SQL要求SELECT子句中未包含在聚合函数(COUNT,MIN,MAX等)中的列需要在GROUP BY中定义。但是,MySQL and SQLite allow for columns to be omitted

此外,使用COUNT(DISTINCT或您将冒险误报。