如何在具有复合键列表的表上执行 SELECT?
如果我有一个包含类似列的表
ID1 ID2 VAL1 VAL2
其中ID1,ID2为主键索引。
如何针对特定 ID1、ID2 值执行 SQL 语句?
示例:我有一个包含 PK (1,1) (1,2) (2,4) (2,1) (3,1) (3,2) (3,5) 记录的表,
我只想选择包含 (1,1) (1,2) (3,5) (3,2) 的记录
SELECT 查询
从 tbl1 中选择 *,其中 ID1 IN (1,3) AND ID2 IN (1,2,5)
将产生不需要的结果:(3,1)。那么最好的方法是什么?
我正在寻找 SQL 的整体答案,但如果它依赖于 DBMS,我想知道如何在 PostgreSQL 和 MySQL 中这样做。
If I have a table with columns like
ID1 ID2 VAL1 VAL2
Where ID1,ID2 makes the primary key index.
How do I execute any SQL statements for specific ID1,ID2 values?
Example: I have table with records that has PK (1,1) (1,2) (2,4) (2,1) (3,1) (3,2) (3,5)
I want to only select records with (1,1) (1,2) (3,5) (3,2)
A SELECT query with
SELECT * FROM tbl1 WHERE ID1 IN (1,3) AND ID2 IN (1,2,5)
will yield undesired result: (3,1). So what's the best way to do this?
I am looking for an overall answer for SQL, but if it is dependent on the DBMS, I would like to know how to do so in PostgreSQL and MySQL.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
MySQL 和 PostgreSQL 都支持
IN
中的元组,如下所示。Both MySQL and PostgreSQL support tuples in
IN
as below.您可以使用
and
和or
来做到这一点:You can do that with
and
andor
:这可能是执行您请求的最紧凑的方式:
This is probably the most compact way of doing what you requested:
或者
OR
你也可以尝试
You could also try