iT邦幫忙

0

SQL EXISTS Operator-note

  • 分享至 

  • xImage
  •  

Exists 的邏輯

EXISTS子查詢用來檢查是否有存在符合條件的行,如果子查詢返回至少一行,則外部查詢返回TRUE,否則返回 FALSE。通常在需要檢查子查詢是否有符合條件的行時使用。
當查詢結果會返回大量資料的時,使用EXISTS較符合效能考量,優於IN,好比說下方的程式碼
兩個查詢結果都會是一樣

SELECT * FROM table_a
WHERE EXISTS
(SELECT * FROM table_b WHERE table_b.id=table_a.id);

以及

SELECT * FROM table_a
WHERE id
in (SELECT id FROM table_b);

EXISTS只需要確認是否存在符合條件的行,不需要檢查完整的子查詢結果。
然而IN會在執行前先計算並儲存子查詢的結果集,然後將外部查詢的值與這個結果集進行比較。
第一個SQL使用EXISTS,當table_atable_b中有相同id的值時,就會執行,將其列出來
感覺是假設table_a中的第一筆資料的id符合條件時,就顯示出來,以這個邏輯類推。

然後第二個用INSQL則是會先將SELECT id FROM table_b中的id找出來然後儲存
再來才繼續條件比較的部分,當table_a中的第一筆資料等於SELECT id FROM table_b中的id
就將其列出來。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言