
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - INSERT 查詢
- SQL - SELECT 查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查詢
- SQL - DELETE 查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - DELETE 連線
- SQL - UPDATE 連線
- SQL - 左連線 vs 右連線
- SQL - UNION vs JOIN
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 候選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - CHECK 約束
- SQL - DEFAULT 約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - IN 運算子
SQL IN 運算子
SQL 的IN 運算子用於在WHERE子句中指定多個值或子查詢。它返回指定列與列表中的某個值匹配的所有行。值列表或子查詢必須用括號括起來,例如 IN (select query) 或 IN (Value1, Value2, Value3, ...)。
在某些情況下,我們可能使用多個 OR 語句在 SELECT、DELETE、UPDATE 或 INSERT 語句中包含多個條件。或者,我們可以使用 IN 運算子代替多個 OR 語句。
IN 運算子可以與 SQL 中的任何資料型別一起使用。它用於根據指定的值過濾資料庫表中的資料。
當您想要選擇與特定值集中的一個值匹配的所有行時,IN 運算子非常有用。而當您想要選擇滿足多個條件中的任何一個條件的所有行時,OR 運算子非常有用。
語法
指定多個值的 SQL IN 運算子的基本語法如下:
WHERE column_name IN (value1, value2, value3, ...);
其中,
value1, value2, value3, ... 是要針對表示式測試的列表中的值。如果在列表中找到這些值中的任何一個,IN 運算子返回 TRUE;如果沒有找到,則返回 FALSE。
帶 SELECT 語句的 IN 運算子
我們可以使用 SQL IN 運算子在 WHERE 子句中指定多個值,也可以在 SELECT 語句中使用它來檢索與指定值中的任何一個匹配的資料。
在這裡,我們使用 IN 運算子在 SELECT 語句中指定多個值。
示例
在這個例子中,我們使用 IN 運算子在 SELECT 語句中指定多個值,考慮 CUSTOMERS 表,它包含客戶的個人詳細資訊,包括他們的姓名、年齡、地址和薪水等,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,使用 INSERT 語句將值插入此表:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00), (2, 'Khilan', 25, 'Delhi', 1500.00), (3, 'Kaushik', 23, 'Kota', 2000.00), (4, 'Chaitali', 25, 'Mumbai', 6500.00), (5, 'Hardik', 27, 'Bhopal', 8500.00), (6, 'Komal', 22, 'Hyderabad', 4500.00), (7, 'Muffy', 24, 'Indore', 10000.00);
表將建立如下:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
2 | Ahmedabad | 25 | 2000 | 1500.00 |
3 | Khilan | 23 | 25 | 2000.00 |
4 | Delhi | 25 | 1500 | 6500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
Mumbai
SELECT * FROM CUSTOMERS WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');
6500
Hardik
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
2 | Ahmedabad | 25 | 2000 | 1500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
示例
27
SELECT * FROM CUSTOMERS WHERE NAME = 'Khilan' OR NAME = 'Hardik' OR NAME = 'Muffy';
6500
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
2 | Ahmedabad | 25 | 2000 | 1500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
帶 UPDATE 語句的 IN 運算子
Bhopal
示例
8500
UPDATE CUSTOMERS SET AGE = 30 WHERE AGE IN (25, 27);
6500
Komal
Query OK, 3 rows affected (0.01 sec) Rows matched: 3 Changed: 3 Warnings: 0
22
Hyderabad
SELECT * FROM CUSTOMERS;
4500
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
2 | Ahmedabad | 30 | 2000 | 1500.00 |
3 | Khilan | 23 | 25 | 2000.00 |
4 | Delhi | 30 | 1500 | 6500.00 |
5 | Kaushik | 30 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
Muffy
帶 NOT 的 IN 運算子
23
語法
Indore
WHERE column_name NOT IN (value1, value2, ...);
示例
3000
SELECT * FROM CUSTOMERS WHERE AGE NOT IN (25, 23, 22);
6500
假設根據上表,我們想要顯示姓名等於“Khilan”、“Hardik”和“Muffy”(字串值)的記錄。這可以使用IN運算子實現,如下所示:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
帶列名的 IN 運算子
輸出
示例
獲得的結果如下:
SELECT * FROM CUSTOMERS WHERE 2000 IN (SALARY);
6500
上面的查詢也可以使用 OR 運算子完成。以下是一個例子:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
3 | Khilan | 23 | 25 | 2000.00 |
帶 IN 運算子的子查詢
我們還可以在 UPDATE 語句中使用SQL IN運算子來更新在 WHERE 子句中與指定值中的任何一個匹配的行。UPDATE 語句用於修改資料庫表中現有資料。
語法
在這裡,我們使用 IN 運算子在 UPDATE 語句中指定多個值,並更新前面建立的 CUSTOMERS 表。在這裡,我們更改年齡為“25”或“27”的客戶的記錄,並將年齡值更新為“30”:
WHERE column_name IN (subquery);
其中,
我們得到以下結果。我們可以觀察到 3 個客戶的年齡已被修改:
示例
驗證
SELECT * FROM CUSTOMERS WHERE NAME IN (SELECT NAME FROM CUSTOMERS WHERE SALARY > 2000);
6500
我們可以使用 SELECT 語句檢索表的內容來驗證更改是否已反映到表中。以下是顯示 CUSTOMERS 表中記錄的查詢:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
4 | Delhi | 25 | 1500 | 6500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |