2009-10-27 5 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로 레코드를 가져 . table1table2에 많은 하나이기 때문에 주, MAX(table2.priority), 여기에 작동하지 않는, 한 표 레코드에 대해, 표 2는 가장 높은 우선 순위 = 1와 N 레코드가 할 수있는 가장 높은 우선 순위를 가진 다른 표 기록 = 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를 지정할 수 있습니다.