我有以下问题。有四个列,Product_ID,Product_price,Start_date和End_date,我需要在给定的一天内选择一个价格最高的产品(1997/12/14)。问题是,产品id可以保持不变的几行,但产品有不同的价格在不同的时间段。我试过这样做,但是我得到了一个空洞的结果:
SELECT
Product_ID, Product_price
FROM Products
WHERE
Start_date >= STR_TO_DATE('1997/12/14', '%y/%m/%d')
AND
End_date =< STR_TO_DATE('1997/12/14', '%y/%m/%d')
发布于 2018-08-28 02:58:49
我认为你想要的逻辑是这样的:
SELECT p.Product_ID, p.Product_price
FROM Products p
WHERE p.Start_date <= '1997-12-14' AND
p.End_date >= '1997-12-14'
ORDER BY p.Product_price DESC
LIMIT 1;
换句话说,您的日期比较是反向的。如果某个时间段是在该日期开始或之前开始,并且在该日期或之后结束的,则该时间段包含特定日期。
发布于 2018-08-28 03:00:30
你可以在最高价格上加入
select Product_ID, Product_price
from Products
inner join (
select max(Product_price) max_price
from Products
WHERE STR_TO_DATE('1997/12/14', '%y/%m/%d') between Start_date AND End_date
) t on Products.Product_price = t.max_price
发布于 2018-08-28 03:45:02
试着实现这一点,会给你一个预期的结果。
select p.ID,p.Price
from product p
where '<Your Date>'<=p.EndDate AND '<Your Date>'>=p.StartDate And p.Price=(select
max(p.Price) from product p);
https://stackoverflow.com/questions/52056185
复制相似问题