【问题标题】:SQL SELECT GROUP BY and join the row with certain valueSQL SELECT GROUP BY 并加入具有特定值的行
【发布时间】:2018-03-04 14:46:53
【问题描述】:

我有两张桌子:

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

【问题讨论】:

  • 我不认为你的问题是完整的,因为没有问题陈述。你能描述一下你的查询应该做什么,或者你需要什么吗?
  • 编辑您的问题并显示您想要的结果。同时标记您正在使用的数据库。

标签: sql select join group-by sql-order-by


【解决方案1】:

我想你可能想要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 我只有一行。我需要所有行。
  • @Simsar78 。 . .我不明白。这应该为每个 id_c 返回一个单独的行。
  • @Simsar78 。 . .这似乎仍然回答了这个问题。
猜你喜欢
  • 1970-01-01
  • 2021-03-15
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
相关资源
最近更新 更多