2010-03-12 108 views
1

更新列我有以下表中訪問數據庫MS-訪問:SQL在表

id VisitNo  Weight  
1 1   100 
1 2   95 
1 3   96 
1 4   94 
1 5   93 

現在行2和4被刪除。所以,我有...

id VisitNo  Weight  
1 1   100 
1 3   96 
1 5   93 

但是我需要的是......

id VisitNo  Weight  
1 1   100 
1 2   96 
1 3   93 

什麼是SQL查詢,我需要完成以上?

感謝

+0

是VisitNo的自動編號? – 2010-03-12 08:39:18

+4

爲什麼?通過重新編號您的「VisitNo」列,您獲得了什麼? – 2010-03-12 08:40:16

回答

1

你真的不應該「重新組織」在你的數據庫的密鑰。如果您以關係方式使用數據庫,則可以引用另一個表中的VisitNo作爲將體重信息與您訪問時保存的其他信息關聯的方式。這個鏈接被稱爲關係,ID被稱爲主鍵,它不應該改變表中的一行,因爲它會破壞其他表中的任何引用(這些引用稱爲外鍵)。

儘管在您的VisitNo序列中看起來很不錯並且「整齊」,但是在刪除記錄時並不是真正正確的過程。

然而,這一課沒有出現,這裏是你如何改變VisitNo,假設它根本不是關鍵,而是一段用戶數據(即我第一次去健身房,我第二次參觀了健身房,我第三次參觀了體育館)

CREATE TABLE #RowNumber (
    RowNumber int IDENTITY (1, 1), 
    id INT, 
    Weight INT ) 

INSERT #RowNumber (emp_id) 
SELECT id, Weight 
FROM tblMyTable 
WHERE id = 1 
ORDER BY VisitNo 

SELECT * FROM #RowNumber 

DROP TABLE #RowNumber 

如果您運行此查詢(用您的表的名稱替換tblMyTable),你會看到ROWNUMBER列在本質上是重 - 編號VisitNo。你可以使用這些數據來回報你的桌子......雖然在這方面你的桌子結構有一個小問題。你需要一個主鍵,在桌子上給你一個很好的獨特的手柄,每行:

recordid id VisitNo  Weight  
1   1 1   100 
2   1 2   95 
3   1 3   96 
4   1 4   94 
5   1 5   93 

沒有這一點,你就會有麻煩更新新VisitNo背靠桌子上,這將是這樣的:

recordid id VisitNo  Weight  
1   1 1   100 
3   1 3   96 
5   1 5   93 

你改變它之後,它應該是這樣的:

recordid id VisitNo  Weight  
1   1 1   100 
3   1 2   96 
5   1 3   93 
+0

ok sohnee,試試吧.... – tecno 2010-03-12 09:31:06

+0

沒有工作,取而代之的是相應的表格和列名,我將不得不重新考慮我的方法, 感謝您的回覆。 – tecno 2010-03-12 09:34:58