我有一个带有表名填充但没有主键的数据库DB。意味着它可以有重复的数据。例如:我有5个家庭(f1,f2,f3,f4,f5),里面有不同的成员(成员可能有相同的名字)。所以我可以在1行以上具有完全相同类型的记录。现在我想编辑该家族的一名成员,但它正在编辑所有重复记录。我想要做的是,我只想一次更新我的数据库一次。换句话说,我想用UPDATE命令执行一次。怎么做? 我正在使用Sql Server Express,VS2010,C#4.0(如果此信息很重要)。 我很确定我的问题听起来可能对某些人来说很愚蠢(可能很多)。但这只是我的问题。任何帮助或建议将不胜感激。谢谢只执行一次Sql命令一次
回答
我知道这不正是你问什么,但严重的是,最简单的方法是改变数据库有一个主键并使用它。其中记录也许是身份的关键....
不这样做,你可以只更新一个记录,但你有没有保证。这就是为什么主键如基本概念。我想这并不重要,如果他们都是一样的,所以....
如果你真的想没有主键进行操作,则需要使用TOP关键字如下所示:How do I update n rows in a table?
将其设置为
UPDATE TOP 1 ....
谢谢...它的工作 – Sandy
添加一个标识列,ID int与自动增量上。然后使用ID进行更新。
CREATE TABLE dbo.Family
(
Id int NOT NULL IDENTITY (1, 1),
FamilyName varchar(50) NULL
)
update dbo.Family set FamilyName = 'xxx' where Id = y
肯定会考虑添加一个标识列 – Sandy
真正的答案是:修复你的数据库设计。每个记录应该有一些唯一的标识符。添加一个自动增量字段或其他东西。
要直接回答你的问题,你可以说“update top(1)...”只更新一条记录。但是没有一些独特的标识符,你怎么知道要更新哪个记录?该方案将基本上更新一个随机记录。这需要我回到第1点。
编辑:哎呀,我原来的答案是针对不同的引擎。以上更正。
我一定会检查我的数据库设计,并会考虑添加一个id列。谢谢你的帮助 – Sandy
- 1. 只运行一次javascript命令一次
- 2. bash命令只执行第一次就
- 3. 管道执行命令只有一次
- 4. 只执行一次SQL函数一次
- 5. 执行多个命令行一次
- 6. 只执行一次ajax呼叫一次
- 7. 指令应该只执行一次
- 8. 一次执行多个unix命令
- 9. 一次执行多个Python命令
- 10. Laravel schedular:每秒执行一次命令
- 11. JSch一次执行多个linux命令
- 12. PHP ssh2_exec,一次执行多个命令
- 13. 从脚本中只运行一次命令,甚至脚本多次执行
- 14. 要多次执行的SQL命令?
- 15. MultiTrigger只执行一次
- 16. JavaScript只执行一次
- 17. 只执行一次jquery
- 18. NSTask只执行一次
- 19. 执行ajax只有一次
- 20. 线程只执行一次
- 21. 只执行completeAjax一次
- 22. 只执行一次函数
- 23. 只有一次执行 - AJAX
- 24. 只执行一次功能
- 25. 木偶 - 不能只执行一次的命令通知
- 26. 拉到刷新执行命令只有一次
- 27. 如何在Xamarin.Forms中只使用ReactiveUI执行一次命令?
- 28. 如何在执行我的命令时只检查一次DBNull?
- 29. 在一次往返中执行多个SQL命令
- 30. jQuery .append一次只能执行一次(目前多次出现)
如果名称重复且没有主键,那么将如何识别要更新的“一个”行? –
hmmm,通过检查不同的列名称,无论遇到多少行匹配,它都必须更新一个并退出。但对你的查询,一个upvote – Sandy
你仍然必须回答*哪个*行更新的问题。 –