其中A = 1 AND A = 2返回0行问题 - (Short Mysql question)

时间:2011-05-04 21:01:15

标签: mysql sql

我的下表(id, Tag)包含以下值

(1, 17)
(1, 31)
(2, 17)
(3, 31)

当我查询以下内容时

"SELECT id FROM table WHERE 1 AND Tag=17 AND Tag=31"

我希望它返回(id)

(1)

但事实并非如此。 (返回0行)

这里有什么问题?

3 个答案:

答案 0 :(得分:11)

对于任何特定行,标记不能同时为17和31. You need

SELECT id 
FROM   table 
WHERE  Tag in (17, 31) 
GROUP  BY id 
HAVING COUNT(DISTINCT Tag) = 2  

答案 1 :(得分:2)

机器是逻辑的,按照你要求他们做的......在这种情况下你的期望是错误的。

标签17和标签31根据boolean math的条件应同时满足以产生结果。

答案 2 :(得分:0)

您要求同时使用Tag为17和31的值的行。你可能想要这个(另外,WHERE 1是不需要的):

SELECT DISTINCT id FROM table WHERE Tag=17 OR Tag=31
编辑:在阅读了其他一些答案后,我决定对此发疯。

SELECT A.id 
FROM table A JOIN table B ON A.id = B.id 
WHERE A.Tag=17 AND B.Tag=31;