我有一個帶有表名填充但沒有主鍵的數據庫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. 只執行一次SQL函數一次
- 4. 執行多個命令行一次
- 5. 指令應該只執行一次
- 6. Laravel schedular:每秒執行一次命令
- 7. 一次執行多個Python命令
- 8. 功能只執行一次
- 9. MultiTrigger只執行一次
- 10. 只執行一次功能
- 11. 只執行completeAjax一次
- 12. NSTask只執行一次
- 13. 只有一次執行 - AJAX
- 14. 要多次執行的SQL命令?
- 15. 如何在執行我的命令時只檢查一次DBNull?
- 16. 拉到刷新執行命令只有一次
- 17. 在一次往返中執行多個SQL命令
- 18. jQuery .append一次只能執行一次(目前多次出現)
- 19. RxJava一次只能執行一個Observable
- 20. 一次執行exec多次查詢一次SQL
- 21. Siebel策略只應執行一次執行兩次
- 22. 執行一次
- 23. 創建一個每5分鐘執行一次SQL命令的PowerShell作業
- 24. 只運行一次js文件一次
- 25. SQL命令和ORDER_ITEMS表,但顯示的運費只有一次
- 26. SQL插入命令只能在循環中工作一次
- 27. 智能GWT JSNI只執行一次
- 28. 只能執行一次的函數
- 29. Javascript函數只執行一次
- 30. AngularJS $承諾只執行一次
如果名稱重複且沒有主鍵,那麼將如何識別要更新的「一個」行? –
hmmm,通過檢查不同的列名稱,無論遇到多少行匹配,它都必須更新一個並退出。但對你的查詢,一個upvote – Sandy
你仍然必須回答*哪個*行更新的問題。 –