我有两个表,一个叫做项目,一个叫做出价。出价包含一系列带有item_id的出价。我正在尝试使用相关的最高出价获取有关该项目的所有信息。
我尝试过像
这样的事情SELECT * FROM items JOIN bids ON items.id=bids.item_id GROUP BY item_id
然而,这似乎是第一次出价,而不是最高出价。
我怎么能得到最高的?
答案 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 *
应该缩小范围。)