【问题标题】:Selecting rows where the value of 2 columns occur in some list of tuples选择某些元组列表中出现 2 列值的行
【发布时间】:2020-08-05 19:15:23
【问题描述】:

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

考虑如下表格:

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

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

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

  • P11P21 或者在哪里
  • P12P23

对于上表,这将是 Main134 的行。

我想我可以通过以下方式实现:

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

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

编辑

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

【问题讨论】:

    标签: sql postgresql where-clause


    【解决方案1】:

    我想你只想要带有元组的in

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

    【讨论】:

    • 哦,我只是假设它会比这更复杂。我会试一试的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2022-01-05
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多