2014-04-29 38 views
0

我有一個表和一個像ID(它已被添加到後面)的字段,我想寫入我的表的ID字段,數字從1到1000.對於這個我寫了這樣的代碼寫入一個sql列,數字從1到1000

  for (int i = 0; i < 75440; i++) 
      { 
       baglan.Open(); 
       SqlCommand kmt = new SqlCommand(); 
       kmt.Connection = baglan; 
       kmt.CommandText = "UPDATE EvrakArsiv SET ID='" + (i + 1) + "' "; 
       try 
       { 
        kmt.ExecuteNonQuery(); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
       baglan.Close(); 
      } 
      for (int i = 0; i < 75440; i++) 
      { 
       baglan.Open(); 
       SqlCommand kmt = new SqlCommand(); 
       kmt.Connection = baglan; 
       kmt.CommandText = "UPDATE EvrakArsiv SET ID='" + (i + 1) + "' "; 
       try 
       { 
        kmt.ExecuteNonQuery(); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
       baglan.Close(); 
      } 

但它在ID字段上返回一個值:所有行的值都是相同的。像9,像1745,像3578 最新我的錯?

+1

那麼,你的查詢中沒有'where'子句,所以它當然會用相同的值更新整個表。你正在使用哪個DBMS? – fancyPants

+0

SQL 2008.如何成爲「Where Where子句」?你能寫出這種情況嗎?我想從Row1開始到最後一行 – paradoxIST

+0

是否要在空白表格中插入新的一組ID? –

回答

0

WHERE子句在UPDATE語句中缺少

+0

好。我必須寫'Where Where子句'? – paradoxIST

+0

另外我沒有PK。 – paradoxIST

0

試試這個..

讓您IDIdentityDBMS。 像這樣http://stackoverflow.com,它會自動從1表中插入值,然後用DBCC CHECKIDENT命令來設置新條目Identity列..

+0

感謝身體它給ID號字段身份,但數字不增加正確。如從1到157是正常的,但是數字得到值213,那麼一切都出錯了。這是什麼原因。我有一個大的數據庫包含75000行。這是這個原因嗎? – paradoxIST

+0

我說完之後,也必須是設計的主鍵。我做了ID主鍵和數字已經修復。 – paradoxIST

0

WHERE子句在這裏失蹤。是什麼讓你的行都是唯一給那些條件WHERE條款

0

您可以使用下面的查詢來更新列:

with cte 
As 
(
SELECT  <column list separated by comma>, Id, 
    ROW_NUMBER() over(order by <column name>) rno 
    FROM EvrakArsiv 
) 
Update cte 
set Id = rno 

它會在無形中排序由子句中爲了提及的列中的數據,然後將行號設置爲表中的相應ID。

+0

我不明白,你能解釋一個例子嗎? – paradoxIST

+0

假設我有一個表格最喜歡的列 Favourites_ID,Game_name,Game_platform,DatePicked。現在我又添加了一列New_ID。我想用表中的記錄號設置new_id。 然後,我可以(在(由Favourites_id順序)RNO 從收藏夾 SELECT Favourites_ID,GAME_NAME,Game_platform,DatePicked,NEW_ID, ROW_NUMBER()) 更新CTE 使用以下查詢 '與CTE 作爲 設置new_id = rno' – Roopesh

+0

好的謝謝。我用SHAHID的方法解決了這個問題。 – paradoxIST

相關問題