【发布时间】:2015-06-28 20:55:30
【问题描述】:
我有一个包含多条记录的数据库,我想在其中进行分组。例如:
cat_id | p_id | amount | sold | date | title
---------------------------------------------
1 | 1 | 4 | 3 | 2015-04-21 | title of product 1
1 | 1 | 0 | 5 | 2015-04-03 |
2 | 1 | 3 | 1 | 2015-04-21 | title of product 2
2 | 1 | 0 | 3 | 2015-04-05 |
在此表中,有两个唯一产品,即 cat_id 1 中的 p_id 1 和 cat_id 2 中的 p_id 1。现在我想获取所有产品的所有列表,将其 amount 和 sold 相加。标题仅在金额 > 0 时填写。
所以我写了这个查询:
SELECT SUM (amount), SUM(sold) cat_id, p_id, title
FROM table
GROUP BY cat_id, p_id
这会返回我:
cat_id | p_id | amount | sold | title
---------------------------------------------
1 | 1 | 4 | 8 |
2 | 1 | 3 | 4 |
所以现在我错过了我的头衔。
我尝试了一些链接GROUP_CONCAT(DISTINCT title),但它连接在一起,这不是我真正想要的。我只需要标题。
我将如何解决这个问题。
注意:更新的问题
【问题讨论】:
-
是否会出现相同 cat_id 和 p_id 的产品标题不同的情况?如果这种情况永远不会发生,那么如果您只关心数量 > 0,为什么还需要分组?
-
我更新了我的问题,问题不完整!还有一列
sold需要求和。即使amount == 0.
标签: mysql