SQL вытягивая из подзапроса - PullRequest
0 голосов
/ 22 февраля 2012

Можно ли получить 2 результата из подзапроса в выражении SQL?

У меня есть:

"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 голосов
/ 22 февраля 2012

Зависимый подзапрос (в зависимости от некоторых внешних значений, таких как 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...