当我写下面的查询时,它会返回所有时间不同的集合。
SELECT title, content FROM Stack
INNER JOIN Overflow ON Stack.OverflowId = Overflow.Id
例如;
期望的结果:
title content
_____ _______
a - c1
b - c2
c - c3
d - c4
e - c5
f - c6
g - c7
首先运行:
title content
_____ _______
g - c7
d - c4
c - c3
b - c2
f - c6
e - c5
a - c1
第二轮:
title content
_____ _______
d - c4
a - c1
f - c6
b - c2
g - c7
e - c5
c - c3
这对我来说很有趣...... 你知道原因吗?
当我使用以下查询时,没关系。
SELECT title, content FROM Stack
INNER JOIN Overflow ON Stack.OverflowId = Overflow.Id
ORDER BY Stack.Id
但问题是
为什么我需要
ORDER BY
才能获得所需的结果?
答案 0 :(得分:2)
因为结果中没有固有的顺序。如果订单很重要,请使用ORDER BY
子句指定所需的顺序。如果没有,那就不要。
答案 1 :(得分:2)
如果没有ORDER BY,您无法预期可预测的订单。没有它,您无法控制返回的行的顺序。原因在于如何指定SQL语言。
答案 2 :(得分:2)
除非您明确说明订购,否则服务器将以最快速检索的方式返回数据。我认为,从SQL 2000到SQL 2005的升级略有改变。
这里有一篇关于详细内容的有趣文章:http://blogs.msdn.com/b/queryoptteam/archive/2006/05/02/588731.aspx