在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);
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