MySQL求两表的差集(非交集)
生活随笔
收集整理的這篇文章主要介紹了
MySQL求两表的差集(非交集)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mysql如何查詢兩個字段數不同的表中數據不一致的記錄
一般可用NOT EXISTS(非存在子句)或 LEFT JOIN左(右)連接后所產生空字段值來篩選兩表的差集
1、NOT EXISTS
not exists在比對字段有可利用的索引時,其運行效率是非常高,但是如果沒有索引的情況下運行在大數據表時,其運行效率極差,這時應避免使用它
SELECT
*
FROM
smd_employee t1
WHERE
NOT EXISTS ( SELECT 1 FROM asd_user_account t2 WHERE t2.u_phone = t1.employee_phone );
2、LEFT JOIN
用左(右)連接來求差集,由于需要實施兩表連接會導致笛卡爾效應其輸出集的記錄行可能會增多,
若果不是一對一或一對多,我們應該將多對多的情況處理成多對一后才進行連接,否則輸出的記錄集可能不正確。
SELECT
a.*
FROM
smd_employee a
LEFT JOIN asd_user_account b ON b.u_phone = a.employee_phone
WHERE
b.u_phone IS NULL;
求差集的兩種方法,有索引可利用時,not exists的效率要高于left join,反之left join效率更好
原文參考:https://zhidao.baidu.com/question/565882811554863764.html
總結
以上是生活随笔為你收集整理的MySQL求两表的差集(非交集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 睡姿不好只是诱因 落枕的真正原因揭秘
- 下一篇: 将y=arctanx展开为x的幂级数