我首先运行查询以获取商品ID,
SELECT ITEM
FROM `SALES`
WHERE DATE>='2018-2-1' AND DATE<='2018-2-5' AND CASH_CREDIT='1'
返回结果; 1,3,7,4,8,7,5,1
我需要使用这些ID号将每个项目的RETAIL_PRICE加在一起。
我尝试了以下操作,但不允许多次使用商品ID,因此仅从1,3,7,4,8,5添加了RETAIL_PRICE,而从其他7和1.我需要添加包含这两个值的它们。
SELECT SUM(RETAIL_PRICE)
FROM `ITEMS`
WHERE ID IN(1,3,7,4,8,7,5,1)
提前致谢。
最佳答案
假设id
是ITEMS
表中的PRIMARY KEY(或UNIQUE KEY),我们可以使用JOIN操作来获取所有匹配的行,并从每行中加总零售价。
SELECT SUM(i.retail_price) AS tot_retail_price
FROM `ITEMS` i
JOIN `SALES` s
ON s.item = i.id
WHERE s.date >= '2018-02-01'
AND s.date < '2018-02-06'
AND s.cash_credit = '1'
如您所见,这种情况
WHERE ID IN (1,3,7,4,8,7,5,1)
相当于
WHERE ID IN (1,3,4,5,7,8)
相当于
WHERE ID IN (1,1,1,1,1,1,1,3,4,5,7,7,7,7,7,7,7,8)
该查询是对表的一次遍历,评估表中的每一行。值在
IN
列表中重复多少次并不重要。条件被评估,或者行满足条件或不满足。条件为TRUE或FALSE(或NULL)。关于mysql - SQL查询,从ID多次求和相同的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48757775/