[英]how to combine multiple true/false rows in MYSQL
我有一个包含各种true / false列的表的连接查询。 我可以强制执行DISTINCT和GROUP BY以确保只返回单个唯一行,但是真/假行的行为不可预测,例如:
**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。行包含0,它将为该行返回0 ...我尝试使用GROUP BY名称,它返回唯一的行,但是我注意到对于在标志列中同时设置了0和1的重复行,它将返回0?
任何帮助赞赏
正如你想要的那样1,如果没有,那么如果没有,则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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.