SQL通过将两个列表传递给两列来检索数据

标签 sql

我在 sql 中有一个表,我想通过以下方式检索基于两列的数据 传递两个值列表。 例如:- 让我们考虑一个表名为“employee”的表

-----------------------------
| project_id |  resource_id  |
-----------------------------
|     7      |     46        |
-----------------------------
|     7      |     87        |
-----------------------------
|     5      |     87        |
------------------------------

我想根据两个值的精确匹配来检索数据 列就像

"select * from employee where project_id = 7 and resource_id = 46;"

然后它返回第一行。如果查询是这样的

"select * from employee where project_id in (7,5) and resource_id in 
(46,87);"

它将返回所有三行而不是第一行和第三行。 我可以理解“sql”引擎通过所有 给定值的组合。但是,我需要查询来处理数据 对于上述值,以返回第一行和第三行。有没有 解决方案? 提前致谢。

最佳答案

如果您的 dbms 支持行类型等:

select *
from employee 
where (project_id, resource_id) in ((7, 46), (5, 87))

ISO/ANSI SQL 合规性:

The following features outside Core SQL-2003 are used:

F641, "Row and table constructors"

T051, "Row types"

F561, "Full value expressions"

(根据http://developer.mimer.se/validator/parser200x/)

关于SQL通过将两个列表传递给两列来检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43870765/

相关文章:

javascript - SQL SELECT 和 UPDATE 语法

sql - 基于列匹配的增量计数器(postgres)

php - 即使数据库中有可用数据,SQL 也会返回空元组

sql - SQL 中的 CAST 和 CONVERT 是否相同?

sql - 如何在 SQL View 中避免 GROUP BY

sql - CHAR(64) 或 BINARY(32) 在 SQL SERVER 中存储 SHA256 哈希

php - INSERT where 不存在于 php 脚本中,比较 2 个表

sql - 使用 RAISERROR 指示 ACCESS DENIED 错误

sql - 将行分组为 5 组

sql - 加入多对多关系