SQL JOIN ON多個條件的用法詳解

一、連接多個表的需求

在關係型資料庫中,我們通常需要連接多張表來進行數據查詢和分析。例如,一個電商網站需要查詢每個用戶的訂單信息,但是用戶表和訂單表是分開存儲的,我們需要通過連接這兩張表來獲得所需信息。這時,我們就會用到 SQL JOIN ON 多個條件。

二、SQL JOIN ON 多個條件的基本用法

在 SQL 中,我們可以使用 JOIN 語句連接多張表。JOIN 語句有很多種類型,本文將重點介紹 INNER JOIN。INNER JOIN 語句返回兩個表中匹配的記錄。JOIN ON 子句用於指定連接條件。當我們需要通過多個條件連接表時,可以使用以下語法:

SELECT *
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column1
AND table1.column2 = table2.column2;

在上述語法中,我們通過 AND 連接了多個 ON 子句,實現了同時滿足多個條件的連接。

三、使用實例

1. 從兩張表中查詢信息

假設我們有以下兩張表,一張用戶表,一張訂單表,我們需要查詢用戶姓名、訂單號和訂單金額。

-- 用戶表
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(255)
);
 
-- 訂單表
CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  amount INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);
 
-- 查詢用戶姓名、訂單號和訂單金額
SELECT users.name, orders.id, orders.amount
FROM users
INNER JOIN orders
ON users.id = orders.user_id;

2. 多個條件連接表

我們還可以使用多個條件連接表,比如查詢每個用戶在每個月的訂單總金額。

-- 訂單表增加日期欄位
ALTER TABLE orders ADD date DATE;
 
-- 插入訂單數據
INSERT INTO orders (id, user_id, amount, date)
VALUES
  (1, 1, 100, '2021-01-01'),
  (2, 1, 200, '2021-02-01'),
  (3, 2, 300, '2021-01-01'),
  (4, 2, 400, '2021-02-01');
 
-- 查詢每個用戶在每個月的訂單總金額
SELECT
  users.name,
  DATE_FORMAT(orders.date, '%Y-%m') AS month,
  SUM(orders.amount) AS total_amount
FROM users
INNER JOIN orders
ON users.id = orders.user_id
AND YEAR(date) = 2021
GROUP BY users.name, month;

四、總結

SQL JOIN ON 多個條件是連接多張表的重要方式之一。通過使用多個 ON 子句,我們可以同時滿足多個條件,實現更加靈活的數據查詢和分析。

原創文章,作者:FKHFM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333286.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FKHFM的頭像FKHFM
上一篇 2025-01-27 13:35
下一篇 2025-01-27 13:35

相關推薦

發表回復

登錄後才能評論