sql - IN 条件左侧的多列

标签 sql postgresql sql-in

这是一个有效的陈述:

SELECT foo FROM table1 WHERE
  column1 IN (SELECT bar FROM table2) AND
  column2 IN (SELECT bar FROM table2)

但有没有什么办法可以避免重复SELECT bar FROM table2语句,使它更简单、更经济?

我的意思是这样的:

SELECT foo FROM table1 WHERE
  «column1 and also column2» IN (SELECT bar FROM table2)

最佳答案

您可以使用带有 EXISTS 运算符的相关子查询

select *
from table1 t1
where exists (select *
              from table2 t2
              where t2.bar in (t1.column1, t1.column2));

如果两列都应与 table2.bar 中的值匹配,则可以使用以下内容:

select *
from table1 t1
where exists (select *
              from table2 t2
              where t2.bar = t1.column1
                and t2.bar = t1.column2);

关于sql - IN 条件左侧的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54781361/

相关文章:

sql - Teradata:数据透视中的 IN 子句无法从表中获取数据

PHP/MySQL - 显示名称/用户名/密码的安全字符,带有 PDO

java - postgresql存在检查错误,语法错误?

postgresql - 在 hsqldb 上运行触发的 postgresql 函数

sql - 从 Django 传递可选列表参数以在原始 SQL 中进行过滤

mysql - 如何在 Order By Asc 中将特定值放在底部?

mysql - 查找 mysql 数据库模式中使用的内存百分比的查询是什么?

database - 尽管进程正在运行,但 postgresql autovacuum 不工作

mysql - 在 MySQL 列中搜索多个值

sql-server - SQL IN 条件