假设我有一个带有两列的SQL表"Celebrities":"fname"和"lname":
fname | lname
---------+-------
Bill | Clinton
Bill | Gates
George | Bush
George | Clinton
Barack | Obama
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询,返回表中每个人的名字和姓氏,其姓氏在"lname"列中至少出现两次.我该如何编写这个SQL查询?
Oca*_*tal 62
SELECT fname, lname FROM Celebrities
WHERE lname IN
(SELECT lname FROM Celebrities
GROUP BY lname HAVING COUNT (lname) >1)
Run Code Online (Sandbox Code Playgroud)
OMG*_*ies 10
SELECT a.*
FROM CELEBRITIES a
JOIN (SELECT c.lname
FROM CELEBRITIES c
GROUP BY c.lname
HAVING COUNT(*) >= 2) b ON b.lname = a.lname
Run Code Online (Sandbox Code Playgroud)
SELECT a.*
FROM CELEBRITIES a
WHERE EXISTS (SELECT NULL
FROM CELEBRITIES c
WHERE c.lname = a.lname
GROUP BY c.lname
HAVING COUNT(*) >= 2)
Run Code Online (Sandbox Code Playgroud)