首页 > 数据库 > mysql教程 > 如何在SQL的IN子句中高效查询元组对?

如何在SQL的IN子句中高效查询元组对?

Patricia Arquette
发布: 2024-12-31 15:29:14
原创
315 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板