我首先运行查询以获取商品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)


提前致谢。

最佳答案

假设idITEMS表中的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/

10-10 00:32
查看更多