我们有多个MSSQL服务器具有相同的数据库副本,下面的查询返回除一个以外的所有服务器的有效顺序,我仔细检查了表的设计,除了几个服务器缺少索引外,所有看起来都相同.
查询由doctrine生成
WITH dctrn_cte AS (
SELECT TOP 10 a0_.Priority
FROM PROJECTS a0_
WHERE a0_.ProjectID = 1234
AND (a0_.Check1 > 0
OR
a0_.Check2 > 0)
AND a0_.Active = 1
ORDER BY a0_.Priority DESC)
SELECT *
FROM (
SELECT *, ROW_NUMBER()
OVER (ORDER BY (SELECT 0)) AS doctrine_rownum FROM dctrn_cte
) AS doctrine_tbl
WHERE doctrine_rownum BETWEEN 1 AND 10 ORDER BY doctrine_rownum ASC
Run Code Online (Sandbox Code Playgroud)
每次在该特定服务器上执行查询时,它都会给出一个随机顺序 - 它完全忽略了ORDER BY部分.