2012-02-29 39 views
0

這是有效的SQL嗎?如果是的話,你能告訴我它的作用嗎?ORDER BY中的子選擇?有效的SQL?

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

在「order by」中的子選擇,這怎麼可能?實際上,這個SQL查詢不是按字段排序,而是按字段行中的某個值排序(min)。這似乎不合邏輯,除了字段名以外的其他內容。但是min(somefield)<> somefield!但是,是的,這個查詢很有效,而教我的工作人員告訴我這一點,而且我很懷疑。 你能告訴我這是什麼意思嗎?或者只是發表一個平等的查詢?

謝謝!

回答

1

該查詢命令MyFirstTable的最小值爲somefield,存儲在MySecondTable下,同一id

這裏有一個簡單的例子:

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)