我有以下问题。有四个列,即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')
答案 0 :(得分:1)
我认为您想要的逻辑更像这样:
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;
换句话说,您的日期比较是倒退的。时间段包含一个特定的日期,如果该日期在该日期或该日期之前或之后,并在该日期或该日期之后结束。
答案 1 :(得分:0)
您可以使用最高价加入
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
答案 2 :(得分:0)
尝试执行此操作,将为您带来预期的结果。
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);