MySQL加入最高?

时间:2012-05-01 17:48:44

标签: mysql

我有两个表,一个叫做项目,一个叫做出价。出价包含一系列带有item_id的出价。我正在尝试使用相关的最高出价获取有关该项目的所有信息。

我尝试过像

这样的事情
SELECT * FROM items JOIN bids ON items.id=bids.item_id GROUP BY item_id

然而,这似乎是第一次出价,而不是最高出价。

我怎么能得到最高的?

2 个答案:

答案 0 :(得分:1)

您需要使用子查询来发现最大出价值,然后将其与现有查询结合以获取所有所需的输出数据。假设出价值位于名为value的列中,并且bids表的PK是名为id的列:

SELECT items.*, bids.*
FROM
  items
  JOIN (
    SELECT id, item_id, MAX(value) AS value FROM bids GROUP BY item_id
  ) AS maxbids ON items.id = maxbids.item_id
  JOIN bids    ON  bids.id = maxbids.id
GROUP BY items.id

如果有多个最高金额的出价,此查询将返回所有这些出价。

答案 1 :(得分:0)

我认为,自我加入也会这样做。因此,假设(@eggyal did)有一个bids.value列:

SELECT *
FROM items i
  JOIN bids b1 ON b1.item_id=i.id
  JOIN bids b2 ON b2.item_id=i.id AND b2.value>b1.value
WHERE b2.id IS NULL

但如果有相同数量的多个出价,则会返回多行。你想怎么处理它们?

SELECT *应该缩小范围。)