我在访问数据库中有以下表格
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 :(得分: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