SQL SELECT GROUP BY并加入具有特定值的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SELECT GROUP BY并加入具有特定值的行相关的知识,希望对你有一定的参考价值。

我有两张桌子:

tbl_car

id_c | name car
1    | VW
2    | Audi
3    | Ferrari

tbl_auto_accessorize

id_a | id_c | fuel | gpl | abs
1    |  1   | 0    |  1  | 0   
2    |  1   | 1    |  0  | 1
3    |  2   | 0    |  1  | 1
4    |  2   | 1    |  0  | 1
5    |  3   | 0    |  1  | 0

我有这个SQL:

SELECT id_a,id_c,abs
FROM tbl_car LEFT JOIN
     tbl_auto_accessorize
     ON tbl_accessorize.id_c = tbl_auto.id_c
GROUP BY id_c

列abs中的返回值为0,因为第一行为0但是相同的id_c具有另一行1.我需要一个等于1的结果,因为至少有一个是同一辆汽车的1。

结果:

id_c | abs
1    | 1
2    | 1
3    | 0
答案

我想你可能想要max()

SELECT c.id_c, MAX(aa.abs)
FROM tbl_car c LEFT JOIN
     tbl_auto_accessorize aa
     ON aa.id_c = c.id_c
GROUP BY c.id_c;

通常,聚合查询中的所有列都应该位于GROUP BY中,或者是聚合函数的参数。这就是我删除id_a的原因。

以上是关于SQL SELECT GROUP BY并加入具有特定值的行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:是不是可以将 GROUP-BY 的结果加入到两个 SELECT 中?

T-SQL GROUP BY 也使用 JOIN、聚合和外部引用错误

sql group排序问题

遇到错误sql_mode = only_full_group_by,所以如何获得所需的结果

sql语句select group by order by where一般先后顺序

sql语句select group by order by where一般先后顺序