这是有效的SQL吗?如果是的话,你能告诉我它的作用吗?
Select *
from MyFirstTable
order by (select min(somefield)
from MySecondTable
where MyFirstTable.id = MySecondTable.id)
“按顺序”中的子选择,这怎么可能?实际上,此SQL查询不按字段排序,而是按字段行(min)中的某个值排序。它似乎不合逻辑,除了字段名称之外的其他任何东西。但是min(somefield)<> somefield!但是,是的,这个查询有效,而且教我的工作人员告诉我这一点,我对此持怀疑态度。 你能告诉我这意味着什么吗?或者只是发布一个等效的查询?
谢谢!
答案 0 :(得分:2)
此查询按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
在上述情况下,您的查询将返回
{{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)