查找匹配的MySQL查询

时间:2016-09-26 15:56:03

标签: mysql

我有以下名为“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 

1 个答案:

答案 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