2013-03-06 52 views
1

選擇記錄我有2代表在MySQL中,有這樣的數據:2型的排序

表1:

id  | title 
-------+----------- 
1  | Test 1 
2  | Test 2 
3  | Test 3 
4  | Test 4 

表2:

id  | table1_id | price 
-------+--------------+---------- 
1  | 1   | 15000 
2  | 1   | 2000 
3  | 1   | 32600 
4  | 2   | 1000 
5  | 3   | 4000 
6  | 4   | 5500 
7  | 2   | 3000 

現在我想選擇所有記錄來自Table 1id排序和選擇最大priceTable 2所以我寫了這個查詢:

SELECT a.*, b.price 
FROM table1 AS a, table2 AS b 
WHERE a.id = b.table1_id 
GROUP BY a.id 
ORDER BY a.id ASC, b.price DESC 

但結果是第一個價格在Table 2

回答

1

您可以通過或子查詢與組做的(更好的解決方案,而無需價格table1的記錄將被選中)

SELECT 
    a.*, 
    b.price 
FROM table1 AS a 
LEFT OUTER JOIN 
(
    SELECT 
     table1_id, 
     MAX(price) AS price 
    FROM table2 
    GROUP BY table1_id 
) AS b 
    ON b.table1_id = a.id 
ORDER BY a.id ASC, b.price DESC 
1

試試這個:

SELECT DISTINCT a.*, MAX(b.price) 
FROM table1 AS a, table2 AS b 
WHERE a.id = b.table1_id 
GROUP BY a.id 
ORDER BY a.id ASC 
0

你需要的是一個GroupWise在第二張桌上最大。

SELECT a.*, b.price 
FROM table1 a 
JOIN table2 b ON a.id = b.table1_id 
LEFT JOIN table2 b2 ON b.table1_id=b2.table1_id AND b.price<b2.price 
WHERE b2.id IS NULL 
ORDER BY a.id ASC; 

此查詢的優點是,您可以從第二張表中選擇所有數據,而不僅僅是最高價格。

0

嘗試

SELECT t1 . * , MAX(t2.price) 
FROM table1 t1, table2 t2 
WHERE t1.id = t2.table1_id 
GROUP BY t1.id 
ORDER BY t1.id ASC