2010-07-27 33 views
6

我認爲sql server中的每一行都有一個唯一的編號。我如何將它包含在我的SQL查詢結果中?在查詢結果中包含行號(SQL Server)

+0

據我所知,療法是沒有唯一的編號,只是你聲明的主鍵。 – Hinek 2010-07-27 14:55:28

+0

通常情況下,表中的第一個字段 - 可能命名爲「id」或類似的東西 - 是主鍵,通常是一個整數,每增加一行就會增加1 ...因此它就像一個行號。但是我們必須知道表是如何組織的,以說明是否存在id字段,如果存在,如何檢索它。 – ewall 2010-07-27 14:58:58

回答

22

如果你指的是,當你運行一個查詢通過Management Studio中提供的行號,也沒有辦法讓,因爲它並沒有真正存在。 Management Studio即時生成。但是,如果您使用的是SQL Server 2005或更高版本,則可以使用排名函數ROW_NUMBER重新創建序列號。請注意,除非包含Order By語句,否則不應該假設數據庫將按指定順序返回行。因此,您的查詢可能如下所示:

Select .... 
    , Row_Number() Over (Order By T.SomeColumn) As Num 
From Table As T 
Order By T.SomeColumn 

Order By By子句用於確定創建順序號的順序。查詢結尾的Order By子句用於確定輸出中行的順序(即順序號順序和行順序可以不同)。

+0

好:)。我在我的主鍵列上做了row_number。這樣我從1開始順序編號沒有任何差距(即使行被刪除)。 – TCM 2010-07-27 15:14:23

2

在結果的唯一性永遠是你的主鍵。

但有一個名爲ROW_NUMBER函數的東西,可以作爲特定結果行的唯一標識。

SELECT zip,city,state,latitude,longitude,timezone,dst, 
      ROW_NUMBER() OVER (ORDER BY zip) AS num 
      FROM dbo.zipcode; 
-1

我認爲你應該使用這個....

DCount('Column_Name','Table_Name','Column_Name <= ' & [Column_Name]) as SR

+0

'DCount()'不是SQL Server中的函數。 – Smandoli 2016-05-18 16:41:18