在ORDER BY中进行子选择?有效的SQL?

时间:2012-02-29 14:20:21

标签: sql subquery sql-order-by

这是有效的SQL吗?如果是的话,你能告诉我它的作用吗?

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

“按顺序”中的子选择,这怎么可能?实际上,此SQL查询不按字段排序,而是按字段行(min)中的某个值排序。它似乎不合逻辑,除了字段名称之外的其他任何东西。但是min(somefield)<> somefield!但是,是的,这个查询有效,而且教我的工作人员告诉我这一点,我对此持怀疑态度。 你能告诉我这意味着什么吗?或者只是发布一个等效的查询?

谢谢!

2 个答案:

答案 0 :(得分:2)

此查询按MyFirstTable下同一somefieldMySecondTable中存储的id的最小值排序MyFirstTable id 1 2 3 MySecondTable id somefield 1 2 1 4 2 1 3 6 3 4

这是一个简单的例子:

id
2
1
3

在上述情况下,您的查询将返回

{{1}}

答案 1 :(得分: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)