我想知道是否可以通过查询完成此操作:
我有一份针对不同产品的出价表
bid_id, product_id, date, price
bid_id是一个递增的键, product_id是另一个产品详细信息表中的外键。
我想选择所有提高产品出价的出价。 根据我在这张表中的内容,可以做到吗?
让我试着让自己更清楚一点:对于每件产品,我都希望得到所有提高价格的博士。
例如:如果表包含
1, 12202, "2013-09-08 13:41:45", 120
2, 17394, "2013-09-08 13:43:32", 250
3, 12202, "2013-09-08 13:54:11", 170
4, 12202, "2013-09-08 14:05:37", 210
我想将第3行和第4行作为输出。 (一种产品可以有几行)
谢谢!
答案 0 :(得分:6)
通过“提高价格”,我认为您的意思是出价高于之前对该产品的任何出价。
如果是这样,答案是肯定的。它可以做到。
哦,你可能也想查看查询。
select b.*
from (select b.*,
(select max(b2.price)
from bids b2
where b2.product_id = b.product_id and
b2.bid_id < b.bid_id
) as prevmaxprice
from bids b
) b
where b.price > prevmaxprice;
编辑:
如果您想提高先前出价的价格,则查询类似,但子查询逻辑略有不同:
select b.*
from (select b.*,
(select b2.price
from bids b2
where b2.product_id = b.product_id and
b2.bid_id < b.bid_id
order by b2.bid_id desc
limit 1
) as prevprice
from bids b
) b
where b.price > prevprice;