2012-02-22 4 views
0

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 등)뿐만 아니라 (topdate 등) date뿐만 아니라 당기 싶습니다. 어떻게해야합니까? 다른 하위 쿼리가 필요합니까 아니면 둘 다 가져올 수 있습니까?

+0

(t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c) –

답변

0

종속 하위 쿼리 (외부의 일부 값에 따라 다르지만, 귀하의 경우 a.id와 같음)는 하위 집합에서 최대 값을 찾는 매우 효율적인 방법은 아닙니다.

대신에 의해 그룹과 하위 쿼리를 사용 : 가입 ON (T2, T3, T4) T1의 왼쪽에서 SELECT 위의 기능 *과 비교 ,, 훨씬 쉽게 대신 십자가에 가입 갈

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 
+0

감사합니다 .................... – user1022585

+0

aegh, Im 'b.topdate'와'a.date' (item이 추가되었을 때)에 의해 그것들을 주문하려고하지만 그것들을 올바로 주문하지는 않습니다 :' "SELECT b.topbid, b.topdate, a. * FROM auction_items a LEFT JOIN (SELECT itemID, 최고 입찰가로 MAX (입찰가), 최고 입찰가로 MAX (날짜) auction_bids GROUP BY itemID) b ON a.id = b.itemID ORDER BY b.topdate DESC, a.date DESC LIMIT 20 " – user1022585