IN 子句中的 SQL 多列

标签 sql oracle

如果我们需要根据给定列的某些值集查询表,我们可以简单地使用 IN 子句。

但是如果需要基于多列执行查询,我们不能使用 IN 子句(在 SO 线程中 grepped)。

从其他 SO 线程,我们可以使用连接或存在子句等来规避这个问题。但是如果主表和搜索数据都在数据库中,它们都可以工作。

E.g
User table:
firstName, lastName, City

给定一个 (firstname, lastName) 元组列表,我需要获取城市。

我可以想到以下解决方案。

1

构建一个选择查询,如,
SELECT city from user where (firstName=x and lastName=y) or (firstName=a and lastName=b) or .....

2

将所有 firstName、lastName 值上传到临时表中,并在“用户”表和新临时表之间执行连接。

是否有解决此问题的任何选项?一般而言,解决此问题的首选方法是什么?

最佳答案

你可以这样做:

SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));

The sqlfiddle .

关于IN 子句中的 SQL 多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13027708/

相关文章:

带连接的 MySQL group_concat

sql - SQL 中的正则表达式

oracle - 如何在oracle中创建xml

java - 当我有 PIVOT 时,使用 JPA 如何在 native 查询中设置参数

sql - 从 postgresql 中的 json 列连接两个 id 表

sql - TSQL/MSSQL Select - 零填充整数

sql - 在 SQLite3 中,如何在 LIKE 子句中进行 SQL 转义?

sql - 在更新中使用regexp_replace

oracle - ORA-00979 : not a GROUP BY expression (Case statement issue)

oracle - PL/SQL 函数参数