mysql 獲取一張表中, 另一張表不存在的數據


   編寫sql語句中,經常需要編寫獲取一張數據表中不存在與另一張表的數據,相關編寫方法如下:

 方法1: 使用not in ,效率低下,在數據較小的情況下可以采用如下編寫   

SELECT 
* 
FROM a 
WHERE 1=1
AND a.Id NOT IN(
     SELECT
         Id
     FROM 
          B 
     WHERE 
         B.IsDeleted=0 
     GROUP BY B.Id
); 

 

 方法2:使用left join  較第一種方法快

SELECT 
    * 
FROM a
LEFT JOIN b ON a.Id=b.Id 
WHERE 1=1
AND b.Id IS NULL; 

 方法3:速度最快,在應用到插入數據時,可在避免重復插入相同數據時又可以獲取較快的時效,,速度比上兩個快非常多

SELECT
   *
FROM a
WHERE 
     1=1
     AND (
            SELECT 
                   COUNT(1)
            FROM b
            WHERE a.Id=b.Id
               
     )=0;

以上方法僅供參考,如有不正確之處及更快的方法,請留言指出,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM