在mysql表中搜索许多道具

在mysql表中搜索许多道具,mysql,sql,select,where,Mysql,Sql,Select,Where,有一个包含两列的表: x y 1 1 1 2 1 3 2 2 2 3 2 4 3 1 3 2 3 5 如果我需要找到所有X,其中Y=5。我使用查询 SELECT * FROM table WHERE y = 5 但是,我需要找到所有X,其中Y=2和Y=3 如何在1查询上执行此操作 结果我必须得到X=1和2(不是3!)。而且Y可能很多 If i use SELECT * FROM table WHERE y IN (1, 2) 我将

有一个包含两列的表:

x    y
1    1
1    2
1    3
2    2
2    3
2    4
3    1
3    2
3    5
如果我需要找到所有X,其中Y=5。我使用查询

SELECT * FROM table WHERE y = 5
但是,我需要找到所有X,其中Y=2和Y=3

如何在1查询上执行此操作

结果我必须得到X=1和2(不是3!)。而且Y可能很多

If i use SELECT * FROM table WHERE y IN (1, 2)
我将得到x=1,2,3,但我不需要Y=3,因为在表中没有行x=3,Y=3,请尝试以下操作:

SELECT * FROM TABLE b WHERE Y = 2 AND EXISTS (SELECT * FROM TABLE WHERE b.X = X AND Y = 3);

您需要使用
WHERE
子句中创建布尔表达式

SELECT * FROM table WHERE (y = 2) OR (y = 3);
如果由于许多
y
值而变得单调乏味,则使用
IN

SELECT * FROM table WHERE y IN (2,3);
如果没有为每个x指定唯一的约束,则必须使用
DISTINCT

SELECT   x
FROM     tableName
WHERE    y IN (2,3)
GROUP BY X
HAVING COUNT(DISTINCT y) = 2

不,如果
Y
与2或3匹配,则将获得所有
X
。你试过这个吗?我不需要,或者,我需要,那不可能,玛丽。条件y=2和y=3不可能为真<中的code>只是
条件列表的一个简化版本。不,我需要X,其中Y=2和3,以您的方式将Y=2或3,然后简单地在查询之间放置。从表中选择*,其中y=2和y=3@SaharshShah如果使用
它将返回零结果。谢谢你,我需要它的继电器!现在试试我的答案,因为如果你再加一个X=3和Y=3的eow,@KuyaJohn的答案是错误的result@SaharshShah我的答案怎么了?看这个。抱歉@KuyaJohn我明白你的逻辑了你的答案很完美。我理解错了
SELECT   x
FROM     tableName
WHERE    y IN (2,3)
GROUP BY X
HAVING COUNT(DISTINCT y) = 2