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