2017-04-05 43 views
-1

去除的地方,显然StackOverflow的不是理论讨论删除,显然计算器不是理论讨论

+0

为什么不使用LIMIT子句? –

+0

你可以迭代使用带有连接的子查询。但是如果你想得到一个有序的返回值,你需要在子查询中使用'ORDER BY'。如果你不能使用'ORDER BY',那么如果你必须使用纯SQL,那么我认为你运气不好。 – Barmar

+1

我不是100%确定我明白你想要做什么。这就是为什么样本数据和预期结果非常有用。 –

回答

2

如果我理解正确的地方,这是你的问题:

你没有按功能顺序访问,但有一组值 和(单调增加1)rownumbers,并且想要排序的 返回。

你缺少有关SQL一个非常重要的一点:表代表无序套。结果集是无序,除非您明确指定使用ORDER BY的顺序。

子查询 - 相关或其他 - 不会以任何一致和可靠的方式影响排序。如果你想“排序返回”,你必须使用ORDER BY

+0

是的,但是,不要粗鲁,当我特别试图了解如何在mysql中执行操作时使用顺序并不特别有用。没有row_number这显然没有任何意义,但是我的目标是尝试使用这些额外的信息来获得我想要的执行。 –

+1

@GeorgeGreen是的,但这就像是要求散列表中的第N项。这就是为什么这是一个奇怪的问题。这是一个非确定性结果,而SQL是关于确定性的。如果您将其设置为任意行编号,则可以针对相同的表执行相同的查询,并且 - 不带'ORDER BY' - 会得到不同的结果,并且*仍然正确*。 SQL是关于编写*不*这样做的查询。 –