我的'VIEW'已订购。但是当我使用select来显示其结果时,输出会被洗牌。 使用以下语句
也会发生此行为SELECT * FROM (SELECT * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE
如何防止这种混乱?
答案 0 :(得分:3)
不幸的是,无法在SQL Server中排序视图。您必须在阅读视图的select语句中执行此操作。
拉姆,我知道。
答案 1 :(得分:2)
您必须在使用该视图的最外层选择中只有ORDER BY
:
SELECT * FROM (SELECT * FROM TABLE) AS DERIVEDTABLE ORDER BY YourColumn
除非你使用TOP
SELECT * FROM (SELECT top 1000000 * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE
但是,除非您通过以下方式添加其他订单,否则最终排序顺序仍可能会根据外部查询而改变:
SELECT * FROM (SELECT top 1000000 * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE
ORDER BY COLUMNA
答案 2 :(得分:1)
你做不到。指定订单的唯一方法是在查询的最外层请求它 - 这是ORDER BY用于订购最终结果集的唯一位置。 ORDER BY的任何其他用途仅用于协助其他操作(例如定义使用TOP
时“TOP 10”的内容。)