SQL查询,多次从ID中对相同的条目求和

时间:2018-02-13 00:34:36

标签: mysql sql database

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

假设idITEMS表中的PRIMARY 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)。