?存儲過程分頁大都會用到這樣的語句
SELECT *,row_number() OVER(ORDER BY id DESC) AS rowNumber FROM
但是SQL2000 中不支持row_number() 需要使用 select ....into 配合臨時表和
IDENTITY (data_type [ , seed , increment ] ) AS column_name? 來作為替代方案。
語句像下面這樣
SELECT *,identity(int,1,1) as rowNumber INTO #temp FROM? Article
但是如果 Article中有標識列的話就會報錯。
無法使用 SELECT INTO 語句將標識列添加到表 ?? 該表的列 ?? 已繼承了標識屬性。
網上找到大多數解決方案都是需要顯示指定源表的列的列表。
一般是使用Convert(int,identity_columnName) 或者使用SET IDENTITY_INSERT指令
這樣雖然可以解決問題但是不夠通用,而且但源表主鍵列名未知的情況下就無能為力了。
經過反復的百度和GOOGLE查閱相關資料后發現可以把上面的語句寫成下面這樣:
SELECT *,identity(int,1,1) as rowNumber INTO
#temp FROM (SELECT * FROM Article) AS newArticle
或則
這樣就不會報錯了。
SELECT *,row_number() OVER(ORDER BY id DESC) AS rowNumber FROM
但是SQL2000 中不支持row_number() 需要使用 select ....into 配合臨時表和
IDENTITY (data_type [ , seed , increment ] ) AS column_name? 來作為替代方案。
語句像下面這樣
SELECT *,identity(int,1,1) as rowNumber INTO #temp FROM? Article
但是如果 Article中有標識列的話就會報錯。
無法使用 SELECT INTO 語句將標識列添加到表 ?? 該表的列 ?? 已繼承了標識屬性。
網上找到大多數解決方案都是需要顯示指定源表的列的列表。
一般是使用Convert(int,identity_columnName) 或者使用SET IDENTITY_INSERT指令
這樣雖然可以解決問題但是不夠通用,而且但源表主鍵列名未知的情況下就無能為力了。
經過反復的百度和GOOGLE查閱相關資料后發現可以把上面的語句寫成下面這樣:
SELECT *,identity(int,1,1) as rowNumber INTO
#temp FROM (SELECT * FROM Article) AS newArticle
或則
SELECT T1.*,IDENTITY(INT,1,1)AS rowNumber INTO #temp FROM
?Article AS T1 JOIN Article AS T2 ON 1=2
這樣就不會報錯了。
?另外通過
INSERT INTO #temp exec('SELECT * FROM Product')
可以把動態構造的SQL插入到#temp 中
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
