SQL - INTERSECT 運算子:初學者的友好指南

Hello there, 未來的 SQL 巫師們!今天,我們將踏上一段令人興奮的旅程,進入 SQL 的世界,特別聚焦於 INTERSECT 運算子。別擔心你對編程還是新手——我將成為你的友好導師,一步步為你解釋一切。所以,拿起你喜歡的飲料,讓我們一起深入探討吧!

SQL - INTERSECT Operator

SQL INTERSECT 運算子

什麼是 INTERSECT?

想像你有兩組數據,你想找出它們的共同點。這正是 SQL 中的 INTERSECT 運算子所做的事!它就像在文氏圖中找到兩個圓圈的交集。

讓我們從一個簡單的例子開始:

SELECT column1 FROM table1
INTERSECT
SELECT column1 FROM table2;

這個查詢會回傳存在於 table1 和 table2 中的所有唯一值。酷炫吧?

真實世界的例子

假設我們有兩個表:students_mathstudents_science。我們想找出同時報名這兩門課的學生。

SELECT student_id FROM students_math
INTERSECT
SELECT student_id FROM students_science;

這個查詢會給我們一個學生 ID 列表,這些 ID 在兩個表中都有出現,從而顯示出同時修習數學和科學的學生。

重點記憶

  1. INTERSECT 只回傳唯一的值。
  2. 兩個 SELECT 語句中的列數和順序必須相同。
  3. 對應列的數據類型必須兼容。

INTERSECT 與 BETWEEN 運算子結合

現在,讓我們來點刺激的,將 INTERSECT 與 BETWEEN 運算子結合使用。BETWEEN 運算子選擇在給定範圍內的值。

示例:尋找共同年齡

假設我們有兩個表:employees_department_aemployees_department_b。我們想找出兩個部門之間共有的年齡,但僅限於 25 歲至 35 歲的員工。

SELECT age FROM employees_department_a WHERE age BETWEEN 25 AND 35
INTERSECT
SELECT age FROM employees_department_b WHERE age BETWEEN 25 AND 35;

這個查詢會回傳存在於兩個部門中的年齡,但僅限於指定範圍內的年齡。這就像找到兩個集合的交集,但我們先對每個集合進行了過濾!

INTERSECT 與 IN 運算子結合

IN 運算子允許你在 WHERE 子句中指定多個值。讓我們看看我們如何與 INTERSECT 一起使用它。

示例:尋找共同產品

想像我們有兩個表:online_storephysical_store。我們想找出在兩個商店中都有的產品,但僅限於某些類別。

SELECT product_id FROM online_store WHERE category IN ('Electronics', 'Books', 'Toys')
INTERSECT
SELECT product_id FROM physical_store WHERE category IN ('Electronics', 'Books', 'Toys');

這個查詢會給我們兩個商店都有的產品 ID 列表,但僅限於電子產品、書籍和玩具類別。這就像為每個商店創建一個短列表,然後找到它們的共同點!

INTERSECT 與 LIKE 運算子結合

LIKE 運算子在 WHERE 子句中用於搜索列中的指定模式。讓我們看看我們如何將其與 INTERSECT 結合使用,進行一些模式匹配的魔法!

示例:尋找共同用戶名

假設我們有兩個表:forum_usersblog_users。我們想找出在兩個平台上都存在的用戶名,但僅限於那些以 'tech_' 開頭的。

SELECT username FROM forum_users WHERE username LIKE 'tech_%'
INTERSECT
SELECT username FROM blog_users WHERE username LIKE 'tech_%';

這個查詢會回傳在論壇和博客上都存在的用戶名,但僅限於那些以 'tech_' 開頭的。這就像找到那些在兩個平台上都活躍的技術愛好者!

總結

好了,各位!我們已經探索了 INTERSECT 運算子以及如何與其他 SQL 運算子結合來執行強大的查詢。記住,熟能生巧,所以不要猶豫去嘗試這些例子,並創造你自己的。

這裡是一個我們所涵蓋方法的快速參考表:

方法 描述
INTERSECT 回傳兩個 SELECT 語句輸出的唯一行
INTERSECT 與 BETWEEN 在指定範圍內找到共同的值
INTERSECT 與 IN 從一組可能性中找到共同的值
INTERSECT 與 LIKE 找到匹配指定模式的共同值

SQL 最初可能看起來令人生畏,但隨著你撰寫的每一個查詢,你都在成為數據操作大師的路上邁進一步。持續練習,保持好奇心,很快你就能輕鬆撰寫複雜的查詢!

記住,在數據庫的世界裡,你是偵探,而 SQL 是你的放大鏡。快樂查詢,願你的 INTERSECTS 永遠能找到你所尋找的!

Credits: Image by storyset