mysql - 如何在具有复合键列表的表上执行 SELECT?

标签 mysql sql postgresql

如果我有一个包含类似列的表格

ID1 ID2 VAL1 VAL2

其中ID1,ID2为主键索引。

如何针对特定 ID1、ID2 值执行任何 SQL 语句?

示例:我的表中包含 PK (1,1) (1,2) (2,4) (2,1) (3,1) (3,2) (3,5) 的记录

我只想选择具有 (1,1) (1,2) (3,5) (3,2) 的记录

SELECT 查询

SELECT * FROM tbl1 WHERE ID1 IN (1,3) AND ID2 IN (1,2,5)

将产生不期望的结果:(3,1)。那么最好的方法是什么?

我正在寻找 SQL 的整体答案,但如果它依赖于 DBMS,我想知道如何在 PostgreSQL 和 MySQL 中这样做。

最佳答案

MySQL 和 PostgreSQL 都支持 IN 中的元组,如下所示。

SELECT * 
FROM tbl1
WHERE (ID1,ID2) IN ((1,1) (1,2) (2,4) (2,1) (3,1) (3,2) (3,5));

关于mysql - 如何在具有复合键列表的表上执行 SELECT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865414/

相关文章:

php - MySQL 查询在一列中返回唯一值并按 id 排序以获得 PHP 数组

SQL Server : Create an optimized view that retrieve the most recent non null value

SQL Server 2019 安装失败

sql - MYSQL优化&问题

ruby-on-rails - 迁移错误 : ENUM type already exists

postgresql - PostgreSQL citext 如何存储在 b 树索引中?小写还是原样?

mysql - 将查询 SQL 转换为 PostgreSQL

mysql - 在命令行上优雅地终止mysqld?

php - 如何在Codeigniter连接中使用Mysql查询?

java - 使用 servlet 和 jsp 进行数据库搜索