我有这张表,我们称之为“行”:
id | id_sale | id_product | quantity
1 1 1 4
2 2 1 4
3 3 1 4
4 4 1 4
它代表销售线。
我想获取产品销售 X 次的行的 ID。对于这样的事情,我相信需要按 id asc 进行订单。
例如,根据之前的数据,对于产品 1 和 X = 6,我将获得 id 2。或者,对于 X = 10,我将获得 id 3。
我发现了一个几乎是我需要的问题: use mysql SUM() in a WHERE clause
我已经尝试了正确的答案(适用于 SQL),但在 SQL 中,我无法在子查询中按 id 添加订单,因此我相信查询不再有意义。
这是我迄今为止尝试过的:
select y.id, y.quantity
from (select t.id,
t.quantity,
(select sum(x.quantity)
from Lines x
where x.id <= t.id) as atmTotal
from Lines t where t.id_product = 1) y
where y.atmTotal >= 10
order by y.ID;
结果:这只是返回包含产品 1 的所有 ID(和数量)。
最佳答案
<强> SQL DEMO
SELECT TOP 1 *
FROM (
SELECT *,
SUM([quantity]) OVER (ORDER BY [id]) as total // or ORDER [sales_id]
FROM Lines
) T
WHERE total <= 6 // your X
ORDER BY total desc
关于SQL - 使用 sum() 检索获得值的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082345/