MySQL用OR& amp;组分组查询和

时间:2013-07-11 11:16:01

标签: mysql group-by where-clause

我有两个表,一个有数据,另一个有一些数据值。我需要选择所有数据,其值如下: (data=1 OR data=2) AND (data=3 OR data=4)

对于每个Info ofc,可能有很多值,所以它应该是GROUP BY,但这就是我对此的所有想法。我尝试过这样的事情:     SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id WHERE val IN(1)AND val IN(2)GROUP BY id

当然它不起作用,因为在一个字段中没有不同数字的信息。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用having子句执行此操作:

SELECT id
FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id
GROUP BY id
having (sum(data = 1) > 0 or sum(data = 2) > 0) and
       (sum(data = 3) > 0 or sum(data = 4) > 0)

sum(data = 1)这样的每个表达式都会计算与id相同的行中匹配该值的行数。

注意:这将返回与条件匹配的id。要获取原始数据,您需要加入表格。