Sql-Server
TOP 1 子句 sql server 的奇怪行為
我有一個 SQL Server 數據庫並將其還原到另一台機器上的另一台伺服器上。現在我在兩個 DB 上執行相同的查詢,產生相同的以下結果集。
select person_id, visit_id, verification_code, mobileNo, created_date from person order by verification_code, created_date DESC
但是當我在上面的查詢中添加 TOP 1 子句時,原始數據庫顯示第二行(忽略第一行)
select TOP 1 person_id, visit_id, verification_code, mobileNo, created_date from person order by verification_code, created_date DESC
而恢復的數據庫顯示第一行
我認為這可能是由於排序規則不同,但我檢查了兩台伺服器的排序規則相同。
Mike D. 提供了有關 SQL Server 如何對數據進行排序的答案,這可能有助於您了解您在某些評論中看到的確定性結果是什麼。
文件的論點說:
ORDER BY
升學 | DESC
指定指定列中的值應按升序或降序排序。ASC 從最低值到最高值排序。DESC 從最高值到最低值排序。ASC 是預設的排序順序。Null 值被視為可能的最低值。所有
NULL
值都位於結果的頂部,因為它們是可能的最低值,並且由於這些行的值都是相同的,根據集合論,首先呈現四個值中create_date
的哪一個沒有任何區別。NULL