sql从子查询中提取

时间:2012-02-22 17:02:03

标签: mysql subquery

是否可以在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)。我怎样才能做到这一点?我是否需要另一个子查询,或者它可以将两者都拉到一起吗?

1 个答案:

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