我有一个价格表,定义如下:
价格
amount
item_id
effective_date
end_date
item_id不是唯一的,所以我有一个项目列表,我想根据它们的 effective_date 和 end_date 获取它们对应的金额,我不想对每个项目进行查询,所以我想到这样做:
SELECT amount WHERE item_id IN (//set of ids) WHERE ?
那么如何为每个 id 指定日期条件呢?这可能吗?
编辑
这是一个示例代码
amount item_is effective_date end_date
125.00 5 12/12/2015 01/03/2016
60.00 5 03/05/2015 12/12/2015
20.00 1 04/06/2015 01/09/2016
100.00 4 01/12/2015 01/03/2017
40.00 4 12/12/2014 01/03/2015
130.00 1 01/11/2010 01/06/2012
假设我想要第一个项目 4 和最后一个项目 1,在一个查询中,如何完成这个
最佳答案
使用 AND 添加更多条件
SELECT amount WHERE item_id IN (//set of ids) AND efective_date = SomeDate
如果有不同的情况不要使用IN
SELECT amount
FROM YourTable
WHERE (item_iS = 4 AND efective_date = CAST('01/12/2015' AS DATE)
AND / OR
(item_iS = 1 AND efective_date = CAST('01/11/2010' AS DATE)
关于MySql:每个 id 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41812580/