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

use*_*087 4 mysql sql

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

(1, 17)
(1, 31)
(2, 17)
(3, 31)
Run Code Online (Sandbox Code Playgroud)

当我查询以下内容时

"SELECT id FROM table WHERE 1 AND Tag=17 AND Tag=31"
Run Code Online (Sandbox Code Playgroud)

我期望它返回(id)

(1)
Run Code Online (Sandbox Code Playgroud)

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

这有什么不对?

Mar*_*ith 11

对于任何特定行,标签不能同时为17和31. 您需要

SELECT id 
FROM   table 
WHERE  Tag in (17, 31) 
GROUP  BY id 
HAVING COUNT(DISTINCT Tag) = 2  
Run Code Online (Sandbox Code Playgroud)