2009-10-27 45 views
0

子查詢我有這樣的SQL:如何寫標準

Select tbl.id, tbl.name 
From 
(select table1.id, table1.name 
from table1 
inner join table2 on table1.id = table2.id 
order by table2.priority 
) tbl 
group by table1.id 
order by table1.name 

我試圖做到的,是對第一個排序(由table2.priority順序),然​​後得到與table1.id, name記錄具有最高優先級。 注意,MAX(table2.priority)這裏行不通,因爲table1table2是一對多的,而對於一個table1的記錄,表2可以具有最高優先級= 1,N記錄,其中具有最高優先級的另一個table1的記錄= 3

回答

0

如果您只需要結果中的一條記錄,並且它們的順序是使您需要的記錄在排序的最後(或開始處),則只需將結果限制爲一條即可。即:

SELECT tbl.id, tbl.name 
FROM (
    SELECT table1.id, table1.name 
    FROM table1 
    INNER JOIN table2 ON table1.id = table2.id 
    ORDER BY table2.priority 
) tbl 
GROUP BY table1.id 
ORDER BY table1.name 
LIMIT 1; 

請注意,根據順序,您可以指定ASC或DESC以確保正確的記錄是您檢索的記錄。