SQL вытягивая из подзапроса

Можно ли получить 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 ответ

Решение

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