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

ram*_*oth 3 sql

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

-----------------------------
| project_id |  resource_id  |
-----------------------------
|     7      |     46        |
-----------------------------
|     7      |     87        |
-----------------------------
|     5      |     87        |
------------------------------
Run Code Online (Sandbox Code Playgroud)

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

"select * from employee where project_id = 7 and resource_id = 46;"
Run Code Online (Sandbox Code Playgroud)

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

"select * from employee where project_id in (7,5) and resource_id in 
(46,87);"
Run Code Online (Sandbox Code Playgroud)

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

jar*_*rlh 5

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

select *
from employee 
where (project_id, resource_id) in ((7, 46), (5, 87))
Run Code Online (Sandbox Code Playgroud)

ISO/ANSI SQL 合规性:

使用了 Core SQL-2003 之外的以下功能:

F641, "行和表构造函数"

T051, "行类型"

F561, "全值表达式"

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