首頁 > 資料庫 > mysql教程 > 如何在SQL的IN子句中高效率地查詢元組對?

如何在SQL的IN子句中高效率地查詢元組對?

Patricia Arquette
發布: 2024-12-31 15:29:14
原創
312 人瀏覽過

How Can I Efficiently Query for Tuple Pairs in SQL's IN Clause?

在SQL IN 子句中使用元組:字串連接的替代方法

在SQL 中,IN 子句允許您將字段與集合進行比較的價值觀。然而,處理包含多個值的元組可能會帶來挑戰。

問題

考慮一個包含欄位 group_id 和 group_type的表,並且您想要查詢具有特定元組的記錄對,例如:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
登入後複製

建議使用字串連接的解決方案,如下所示,對於大型表:

SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
登入後複製

標準SQL 解

更有效的解法是對IN 子句中的元組使用標準SQL-92語法以及 VALUES 關鍵字:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (
    VALUES ('1234-567', 2), 
           ('4321-765', 3), 
           ('1111-222', 5)
);
登入後複製

多種 SQL 產品都支援此語法,包括 PostgreSQL 和SQLite。

Microsoft SQL Server 注意

在撰寫本文時 (SQL Server 2022),Microsoft SQL Server 不支援此語法。

以上是如何在SQL的IN子句中高效率地查詢元組對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板