sql - 选择某些元组列表中出现 2 列值的行
问题描述
这个问题最好用一个例子来问。
考虑如下表:
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
OR 在哪里P1
是2
和P2
是3
。
对于上面的表格,这将是Main
或的行。1
3
4
我想我可以通过以下方式实现这一目标:
SELECT Main
WHERE CONCAT(P1, P2) IN ("11", "13")
但我怀疑这不会使用我在P1
or上的任何索引P2
。假设我有很多数据,有没有更好的方法来发出这个使用索引的查询?
编辑
我随后发现这个问题也回答了我的问题(我使用的是 sqlalchemy)
解决方案
我想你只想要in
元组:
where (p1, p2) in ( (1, 1), (2, 3) )
推荐阅读
- python-3.x - 使用 Python 进行端口扫描
- python - 根据python中的条件添加前导零
- ejabberd - 为什么 ejabberdctl 对 check_password 命令没有响应?
- python - 使用 ElementTree 在 Python 中按元素解析 XML
- angular - 当我只有一个字段时,需要表单来检查所有字段以进行验证
- office365 - Outlook Web Addins-office 365 OWA getCallbackTokenAsync 返回“失败”,但在 OWA 中最近的 UI 更新后与 Outlook 客户端正常工作
- python - 如何通过 plt.arrow 绘制两侧分开的箭头?
- java - 安装JDK后,无法运行.jar
- azure - 如何在 Azure DevOps 中导入任务组
- android - ConstraintLayout 中的 RecyclerView。仅在屏幕上显示完整的可见项目