SQL SELECT GROUP BY 并加入具有特定值的行
SQL SELECT GROUP BY and join the row with certain value
我有两个表:
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 列中的 return 是 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
.
的原因
我有两个表:
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 列中的 return 是 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
.