JOIN 用法


Posted by Leo Li on 2025-03-02

介紹

可以將兩個Table組合在一起。

JOIN語法種類

  • inner join
  • outer join
    • left join
    • right join
    • full join

範例

-- 建立資料夾
CREATE TABLE teams (
  id SERIAL PRIMARY KEY,
  name VARCHAR(20)
);
CREATE TABLE users(
    id SERIAL PRIMARY KEY,
     name VARCHAR(50),
    salary INTEGER,
    team_id INTEGER,
    FOREIGN KEY(team_id) REFERENCES teams(id)
);

-- 新增資料
INSERT INTO teams(name) VALUES 
    ('開發部'),
    ('人事部'),
    ('行銷部'),
    ('設計部');
INSERT INTO users(name, salary, team_id) VALUES 
    ('張曉明', 46000, 1),
    ('王大陸', 47000, 1),
    ('李小月', 53000, 2),
    ('陳淑芬', 56000, 2),
    ('林小豪', 46000, 1),
    ('陳余華', 41000, NULL),
    ('王小美', 40000, NULL);
--

inner join

查詢有部門的員工資料

八成都使用inner join方法

SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位

inner join


left join

顯示未分配部門的員工資料

SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位

left join


right join

查詢空部門的資料

查詢部門完全沒有員工的情況下。

SQL處理順序

  1. 先進行JOIN,然後再SELECT階段選取所需欄位
  2. 再搭配where篩選空部門

right join

搭配where篩選空部門

SELECT 
  users.name as user_name,
  teams.name as team_name
FROM users
RIGHT JOIN teams ON users.team_id = teams.id
WHERE users.name IS NULL;

查詢空部門的資料


full join

部門配置與新進人員總覽

SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位

full join

欄位提供給資料庫做顯示null可能會引發錯誤。所以會儘量搭配COALESCE避免。


#SQL #Inner Join #left join #right join #full join







Related Posts

為什麼 codepen 不會自動跳出相關語法?

為什麼 codepen 不會自動跳出相關語法?

JS review

JS review

[Week 3] JavaScript - ES6 語法

[Week 3] JavaScript - ES6 語法


Comments