Select
顯示具有相同姓氏但不同名字的記錄,其中一個名字元合條件
我的 SQL 查詢比這更複雜,但這部分我被卡住了。例如,如果我有一張桌子:
lname fname -------- ----- Mitchell Jason Miles Ryan Miles Mary Mitchell Craig Payne Jason
我只想顯示名字是 Jason 並且存在另一個具有相同姓氏的記錄的行。
所以它應該只顯示
lname fname -------- ----- Mitchell Jason Mitchell Craig
WITH cte AS ( SELECT t1.lname, t1.fname, COUNT(t1.fname) OVER (PARTITION BY t2.lname) cnt FROM tbl t1, tbl t2 WHERE t1.lname = t2.lname AND t2.fname = 'Jason' ) SELECT lname, fname FROM cte WHERE cnt > 1
在chittybang的回答中用小提琴測試它。
假設您使用的是 SQL Server,您可以執行以下操作:
SELECT c.lname, c.fname FROM tbl as c WHERE c.lname IN (SELECT a.lname FROM tbl as a inner join (SELECT lname FROM tbl GROUP BY lname HAVING COUNT (lname)> 1) AS b on a.lname = b.lname WHERE a.fname = 'Jason');
你可以在這個小提琴中測試它
希望這對您有所幫助。