0

我有两张表,一张带有数据,另一张带有该数据的一些值。我需要选择所有具有以下值的数据: (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

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

4

1 回答 1

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)

每个表达式 likesum(data = 1)计算与该值匹配的行数,id在相同的行内。

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

于 2013-07-11T11:27:42.397 回答