SQL SELECT:出现的值> 1

jdn*_*ldn 1 sql select duplicates having

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

snr zip
01 83
02 82
03 43
04 28
Run Code Online (Sandbox Code Playgroud)

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

我试过这个查询:

SELECT snr, zip
FROM student
GRUOP BY snr
HAVING  (COUNT(zip) > 1)
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*llo 6

看起来您需要zipSELECT列中删除,或者将其包装在聚合函数中,例如COUNT(zip):

SELECT   snr, COUNT(zip)
FROM     student
GROUP BY snr
HAVING   (COUNT(zip) > 1)
Run Code Online (Sandbox Code Playgroud)

另请查看@OMG Ponies的答案以获得进一步的建议.


OMG*_*ies 5

使用:

  SELECT snr, zip
    FROM student
GROUP BY snr, zip
  HAVING COUNT(DISTINCT zip) > 1
Run Code Online (Sandbox Code Playgroud)

标准SQL要求没有被包裹在聚合函数SELECT子句中的列(COUNT,MIN,MAX等)需要在GROUP BY进行定义.但是,MySQL和SQLite允许省略列.

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