与多个条件进行“与”运算时不可能出现

时间:2019-05-22 09:26:38

标签: mysql selection criteria

我有一个名为links的表,其中包含一列idl(PRIMARY)和三列ide,idd和idv,它们是由外键绑定到相应表实体,描述符和值的整数,每个表都包含ide上的PRIMARY索引,idd和idv。 我想选择与某些条件相对应的条目。

查询

    SELECT DISTINCT(l.ide)
    FROM links l 
    WHERE (idd = 34 AND idv = 60) OR (idd = 31 AND idv = 166)

工作正常。 但是使用AND进行的同一查询不会给出任何结果(我肯定知道应该有结果)。

当我要求解释时,我收到消息“不可能查询”。

预先感谢您提供任何线索。

版本: 在我的表格中,我至少有两行(idl,ide,idd,idv):     232, 297, 31, 166 和     235, 297, 34, 60

我想选择ide 297。

我希望这会更清楚。

1 个答案:

答案 0 :(得分:0)

DROP TABLE IF EXISTS links;

CREATE TABLE links
(ide INT NOT NULL
,idd INT NOT NULL
,idv INT NOT NULL
,PRIMARY KEY(ide,idd)
);

INSERT INTO links VALUES
(1,34,60),
(1,31,166);

SELECT * FROM links;
+-----+-----+-----+
| ide | idd | idv |
+-----+-----+-----+
|   1 |  34 |  60 |
|   1 |  31 | 166 |
+-----+-----+-----+
2 rows in set (0.00 sec)

SELECT ide FROM links WHERE (idd,idv) IN((34,60),(31,166)) GROUP BY ide HAVING COUNT(*) = 2;
+-----+
| ide |
+-----+
|   1 |
+-----+