Ive得到了這樣一個表,其中我在尋找不必要的重複行:在沒有指定值的情況下在三列中查找具有重複項的行?
我想找到其中第一個名字,姓氏,和職業欄是相同的所有行 - 在這種案例行1和3.我不想指定相同的值應該是什麼,因爲我不知道。
我試過this question的答案,但我不認爲它適用於這種情況。
Ive得到了這樣一個表,其中我在尋找不必要的重複行:在沒有指定值的情況下在三列中查找具有重複項的行?
我想找到其中第一個名字,姓氏,和職業欄是相同的所有行 - 在這種案例行1和3.我不想指定相同的值應該是什麼,因爲我不知道。
我試過this question的答案,但我不認爲它適用於這種情況。
自加入,3次(未測試):SELECT *一個從your_table一個,your_table B,your_table C,your_table d 其中 a.fname = b.fname和a.lname = c.lname和一個。職業= d.occupation
簡單的解決方法是增加一個HAVING子句,其中有重複所有三列
SELECT
ID, FirstName, LastName, Occupation, Age
FROM table1
GROUP BY
FirstName,
LastName,
Occupation
HAVING COUNT(*) > 1
這裏分組後是DEMO有兩個重複的行,以確保其工作正常
編輯:
我第一次認識是你想要的,當它具有重複一行返回..如果你想有一個查詢將返回所有重複的行.. 那麼這裏是......這將返回行1和3
SELECT p1.* FROM people p
JOIN people p1
ON p1.firstname = p.firstname
AND p1.lastname = p.lastname
AND p1.occupation = p.occupation
GROUP BY id
HAVING COUNT(*) > 1;
另一DEMO
不錯!我試圖使用一些複雜的'加入',但你的解決方案更優雅! – Cynical
@Cynical謝謝:)我已經嘗試編寫這麼多複雜的查詢只是爲了得到一些簡單的解決方案太大lol –
您的查詢返回行1和2,而不是第1和第3行。 – blarg