如何在MYSQL中组合多个true / false行

时间:2010-11-19 13:41:35

标签: mysql group-by distinct-values

我在包含各种true / false列的表上有一个连接查询。 我可以强制执行DISTINCT& GROUP BY确保只返回单个唯一行,但是true / false行的行为不可预测,例如:

**Table 1**
loc_id name
-------------
1      a
2      b
3      c
4      d

**Table 2**
prod_id loc_id value
-------------
1       1      abc
2       1      bcd
3       1      def
4       2      fgh

**Table 3**
prod_id flag
-------------
1       0
2       0
3       1
4       1

SELECT DISTINCT name, flag from table1
LEFT JOIN table3 ON table3.prod_id = table2.prod_id
LEFT JOIN table2.loc_id=table1.loc_id

这给了我包含loc名列表的行。但是标志列有时返回多行,我想要做的是组合这些行,这样如果有多个,并且它们包含0和1,则查询将只返回一行,标志设置为1。 rows包含0,它将为该行返回0 ... 我尝试使用GROUP BY名称,它返回唯一的行,但是我注意到,对于在标志列中同时设置了0和1的重复行,它将返回0?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:5)

当你想要1时,如果有1,则如果你想要0,那么MAX(标志)就足够了。

SELECT name, MAX(flag) from table1
LEFT JOIN table3 ON table3.prod_id = table2.prod_id
LEFT JOIN table2.loc_id=table1.loc_id
GROUP BY name