sle*_*ske 12
是的:不应该这样做,因为它在概念上没有意义.
子查询会在某些外部查询(否则将是毫无意义的)来使用,并且外部查询将不得不这样做反正订货,所以没有点订购的子查询.
这是因为SQL中的查询结果将没有特定的顺序,除非您使用显式的ORDER.因此,即使您在子查询中使用了ORDER,也无法保证这会影响外部查询的结果顺序; 所以这毫无意义.
它当然可以在某些特定的RDBMS中产生差异,因为它的实现,但这将是特定于实现的,而不是你应该依赖的东西.
编辑:当然,如果在子查询中使用TOP或LIMIT,则需要使用ORDER.但是那不是标准的SQL ......
Qua*_*noi 11
如果子查询使用某种LIMIT
/ ,则应该使用它TOP
.
SQL Server
除非子查询包含TOP
或FOR XML
子句,否则不允许它:
-- Fails
WITH q(id) AS
(
SELECT 1
UNION ALL
SELECT 2
)
SELECT *
FROM (
SELECT *
FROM q
ORDER BY
id DESC
) q2
-- Succeeds
WITH q(id) AS
(
SELECT 1
UNION ALL
SELECT 2
)
SELECT *
FROM (
SELECT TOP 1 *
FROM q
ORDER BY
id DESC
) q2
-- Succeeds, but ORDER BY is ignored
WITH q(id) AS
(
SELECT 1
UNION ALL
SELECT 2
)
SELECT *
FROM (
SELECT TOP 100 PERCENT *
FROM q
ORDER BY
id DESC
) q2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38969 次 |
最近记录: |