MySQL左边连接最高的地方

时间:2016-01-27 16:36:50

标签: mysql

我想为共享同一作业的特定案例选择一块总和。 但我只希望得到最高职位的结果。

我有下表(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.如何继续让这个工作?

2 个答案:

答案 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函数。只有在想要将所有值一起添加(总计)时才使用和函数