我已经写了这个查询来获取具有相同SSN号码的员工。但是这个问题给了我所有的就业机会,无法弄清楚它是什么问题。
SELECT a.empid,
a.NAME,
a.ssn
FROM p_data a
WHERE ssn IN (SELECT ssn
FROM p_data b
WHERE b.ssn = a.ssn
GROUP BY ssn
HAVING ( a.ssn ) > 1);
答案 0 :(得分:1)
您希望组有多个记录(重复),请使用
HAVING COUNT( * ) > 1);
而不是
HAVING ( a.ssn ) > 1);
另一种应该更有效的方法:
SELECT a.empid,
a.NAME,
a.ssn
FROM p_data a
WHERE EXISTS
(
SELECT 1 FROM p_data a2
WHERE a.empid <> a2.empid
AND a.ssn = a2.ssn
)
如果SSN
可以为空,这也有效。然后你只需要将最后一行改为:
AND COALESCE(a.ssn, '') = COALESCE(a2.ssn, '')