我有以下名为“MyTable”的MySQL表
ID --- a --- b
10 --- 20 --- 42
11 --- 20 --- 43
12 --- 20 --- 44
13 --- 21 --- 44
14 --- 20 --- 45
14 --- 22 --- 44
14 --- 22 --- 43
14 --- 24 --- 45
14 --- 22 --- 42
我正在尝试编写一个查询,让我进入以下结果。 例子。
SELECT b FROM mytable WHERE a=(20, 21, 22)
这将返回44,因为它是唯一常见的数字。
SELECT b FROM mytable WHERE a=(20, 22) AND b is the same
这将返回42和43,因为两者都匹配
SELECT b FROM mytable WHERE a=(22, 24) AND b is the same
这不返回任何内容,因为列a中的数字之间的b值不同。
感谢您的帮助
(我发现答案)
select b
from MyTable
group by b
having sum(a = 20) > 0 and // -- has id = 20
sum(a = 21) > 0 // -- has id = 21
答案 0 :(得分:0)
对于那些你希望通过集合缩小范围的查询,你可以采用以下两种方式之一:长期以来:
SELECT b FROM mytable WHERE a=20 OR a=21 OR a=22
或者简短来说,使用IN关键字:
SELECT b FROM mytable WHERE a IN (20, 21, 22)
对于你的查询'SELECT b FROM mytable WHERE a =(20,22)AND b是相同的'你仍然可以使用相同的想法,但是:
SELECT b FROM mytable WHERE a IN(20, 22) AND b=a