2

TOPとOrder Byを利用した全文検索があります。この同じクエリを別のデータベースで使用しましたが、順序は常に同じです。何らかの理由で、別のデータベースでは、順序が常に少し変わっているように見えます。多くはありませんが、ほんの少しです。これがどのように見えるかです

SELECT TOP 20 * FROM 
(
SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, 
       ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS num

       FROM dbo.tblCandidates  WHERE (CONTAINS(([resume]), @SearchItem))

) AS a 
WHERE num > @start

この場合、Order By 句が常に機能するとは限らない理由を考えられる人はいますか?

ありがとう!

4

1 に答える 1

4

句はありませんORDER BY(句内のOVER()句は決定に使用されROW_NUMBER()、通常は出力の順序にまったく影響を与えません)。他のシステムでこのクエリからの特定の順序を確認した場合、それはまったくの偶然であり、信頼すべきではありません。特定の順序が必要な場合はORDER BY、外側のクエリに追加する必要があります。それが何をすべきだと思うか、他の場所で何を観察したかは関係ありません。

SELECT TOP 20 * FROM 
(
SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, 
       ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS num

       FROM dbo.tblCandidates  WHERE (CONTAINS(([resume]), @SearchItem))

) AS a 
WHERE num > @start
ORDER BY num;
于 2013-03-13T02:11:52.620 に答える