mySQL - 这个查询是否可行

时间:2013-09-09 19:14:16

标签: mysql sql

我想知道是否可以通过查询完成此操作:

我有一份针对不同产品的出价表

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行作为输出。 (一种产品可以有几行)

谢谢!

1 个答案:

答案 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;