今天遇到了一個SQL語句的問題,現有一張表,表名爲t_people。表數據如下所示:
要求:查詢電話相同的人的姓名
剛看到這個問題的時候,我還有點犯暈(請不要嘲笑,確實我技術比較菜),然後自然只能上網查嘍,查到類似的案例有兩種方式。
第一種:SELECT p1.* FROM t_people p1 INNER JOIN t_people p2 ON p1.phone = p2.phone AND p1.id <> p2.id
結果耗時0.002s,如下所示:
第二種:SELECT * FROM t_people WHERE phone IN (SELECT phone FROM t_people GROUP BY phone HAVING COUNT(*) > 1)
結果耗時0.009s,如下所示:
第三種:SELECT id,NAME,phone,(SELECT COUNT(*) FROM t_people p2 WHERE p1.phone = p2.phone)AS total FROM t_people p1 HAVING total > 1
結果耗時0.001s