首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 子查詢實戰:從 A 表找出也存在於 B 表的欄位值

     編輯:程式設計綜合問答

需求:從資料表 A 的欄位 Aa 中,篩選出也存在於資料表 B 的欄位 Ba 的值。最直觀的寫法是使用 IN 子查詢:

SELECT Aa FROM A WHERE Aa IN (SELECT Ba FROM B);

替代寫法與效能考量

  • EXISTS:SELECT Aa FROM A WHERE EXISTS (SELECT 1 FROM B WHERE Ba = A.Aa);在 B 表有索引時通常更快。
  • JOIN:SELECT DISTINCT A.Aa FROM A INNER JOIN B ON A.Aa = B.Ba;需注意去重。
  • INTERSECT(支援的資料庫):SELECT Aa FROM A INTERSECT SELECT Ba FROM B;語意最清晰。

建議

小資料量用 IN 最好讀;大資料量且 B 表有索引時優先考慮 EXISTS;若只需交集且資料庫支援,INTERSECT 最簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved