是否可以在sql语句中从子查询中提取2个结果?
我有:
"SELECT
(SELECT bid FROM auction_bids WHERE itemID=a.id ORDER BY bid DESC LIMIT 1) as topbid,
a.* FROM auction_items a ORDER BY a.date DESC LIMIT 15"
它返回topbid
的部分,我也希望它不仅可以提取bid
(作为topbid),还可以提取date
(作为topdate)。我怎样才能做到这一点?我是否需要另一个子查询,或者它可以将两者都拉到一起吗?
答案 0 :(得分:0)
依赖子查询(取决于外部的某些值,如您的情况中的a.id)不是在子集中查找最大值的非常有效的方法。
而是使用GROUP BY的子查询:
SELECT b.topbid, b.topdate, a.*
FROM auction_items a
LEFT JOIN
( SELECT itemID, MAX(bid) as topbid, MAX(date) as topdate
FROM auction_bids
GROUP BY itemID ) b
ON a.id = b.itemID
ORDER BY a.date DESC
LIMIT 15