我想为共享同一作业的特定案例选择一块总和。 但我只希望得到最高职位的结果。
我有下表(3dprint)
+------+---------+-----------+--------+
| p_id | case_id | Qty_piece | job_id |
+------+---------+-----------+--------+
| 1 | 186 | 1 | 5 |
| 2 | 186 | 2 | 5 |
| 3 | 186 | 4 | 7 |
+------+---------+-----------+--------+
所以我试过
SELECT SUM(Qty_piece) FROM 3dprint
WHERE 3dprint_caseID = 186
ORDER BY 3dprint_jobID DESC LIMIT 1
但它给了我7.我想要4.如何继续让这个工作?
答案 0 :(得分:1)
这应该有效:
SELECT SUM(Qty_piece) FROM 3dprint
WHERE 3dprint_caseID = 186
Group by 3dprint_caseID
Having job_id = max(job_id)
ORDER BY 3dprint_jobID DESC LIMIT 1
答案 1 :(得分:0)
而@P。 Jairaj的回答是正确的,如果你真的总是发送case_id,则不需要分组。使用更简单的查询,如下所示。
SELECT Qty_piece FROM 3dprint
WHERE case_id = 186 and job_id in (select max(job_id) from 3dprint where case_id = 186)
并使用您的查询与小错字修复并删除sum函数,因为它不相关:
SELECT Qty_piece FROM 3dprint
WHERE case_id = 186
ORDER BY job_id DESC LIMIT 1
您已经按job_id排序并限制为1,因此不需要sum函数。只有在想要将所有值一起添加(总计)时才使用和函数