首页 > 解决方案 > 选择某些元组列表中出现 2 列值的行

问题描述

这个问题最好用一个例子来问。

考虑如下表:

Main | P1 | P2
==============
1    | 1  | 1
2    | 1  | 3
3    | 1  | 1
4    | 2  | 3
...

我想发出一个查询,该查询返回和Main的值出现在元组列表中的所有值。P1P2

例如,如果我有列表,[(1,1), (2,3)]我会想要以下行:

对于上面的表格,这将是Main或的行。134

我想我可以通过以下方式实现这一目标:

SELECT Main 
WHERE CONCAT(P1, P2) IN ("11", "13")

但我怀疑这不会使用我在P1or上的任何索引P2。假设我有很多数据,有没有更好的方法来发出这个使用索引的查询?

编辑

我随后发现这个问题也回答了我的问题(我使用的是 sqlalchemy)

标签: sqlpostgresqlwhere-clause

解决方案


我想你只想要in元组:

where (p1, p2) in ( (1, 1), (2, 3) )

推荐阅读