2012-02-29 6 views
0

유효한 SQL입니까? 그렇다면 그게 무슨 뜻인지 말해 주시겠습니까?ORDER BY의 Subselect? 유효한 SQL?

Select * 
from MyFirstTable 
order by (select min(somefield) 
    from MySecondTable 
    where MyFirstTable.id = MySecondTable.id) 

"주문자"의 subselect는 어떻게 가능합니까 ?? 실제로이 SQL 쿼리는 필드별로 정렬하지 않고 필드 행의 일부 값 (분)별로 정렬합니다. 논리적으로 보이지 않으므로 필드 이름이 아닌 다른 것으로 정렬됩니다. 하지만 min (somefield) <> somefield! 그러나 네,이 쿼리는 작동하고 저를 가르치는 직장의 누군가는 저에게 이것을 말했고 나는 회의적입니다. 이것이 무슨 뜻인지 말해 줄 수 있습니까? 또는 동등한 쿼리를 게시 하시겠습니까?

감사합니다.

답변

1

이 쿼리는 아래에 MySecondTable에 저장된 somefield의 최소 값으로 MyFirstTable을 주문합니다. 여기

빠른 예제 : 쿼리에 반환 위의 경우

MyFirstTable 
id 
1 
2 
3 

MySecondTable 
id somefield 
1  2 
1  4 
2  1 
3  6 
3  4 

id 
2 
1 
3 
0

더 의미 할 수있다 동등한 질의 :

SELECT MyFirstTable.ID, MyFirstTable.A, MyFirstTable.B 
FROM MyFirstTable 
INNER JOIN MySecondTable ON MyFirstTable.ID = MySecondTable.ID 
GROUP BY MyFirstTable.ID, MyFirstTable.A, MyFirstTable.B 
ORDER BY MIN(MySecondTable.SomeField)