【发布时间】:2020-08-05 19:15:23
【问题描述】:
这个问题最好用一个例子来问。
考虑如下表格:
Main | P1 | P2
==============
1 | 1 | 1
2 | 1 | 3
3 | 1 | 1
4 | 2 | 3
...
我想发出一个返回所有Main 值的查询,其中P1 和P2 的值出现在元组列表中。
例如,如果我有 [(1,1), (2,3)] 列表,我会想要以下行:
-
P1是1和P2是1或者在哪里 -
P1是2和P2是3。
对于上表,这将是 Main 为 1、3 或 4 的行。
我想我可以通过以下方式实现:
SELECT Main
WHERE CONCAT(P1, P2) IN ("11", "13")
但我怀疑这不会使用我在P1 或P2 上的任何索引。假设我有很多数据,有没有更好的方法来发出这个使用索引的查询?
编辑
我随后发现了这个question,它也回答了我的问题(我使用的是 sqlalchemy)
【问题讨论】:
标签: sql postgresql where-clause