【问题标题】:MySQL grouped query with OR & ANDMySQL 使用 OR & AND 分组查询
【发布时间】:2013-07-11 11:16:00
【问题描述】:

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

当然不行,因为在一个字段中没有不同数字的信息。请问您能帮忙吗?

【问题讨论】:

    标签: mysql group-by where-clause


    【解决方案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 相同的行内。

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多