Sah*_*lva 6 sql t-sql sql-server
我有一个包含数据集的表。表数据如下。
\n\nID | Name | Age\n----------------\n1 | A | 24\n2 | B | 25\n3 | C | 30\n4 | D | 46\n5 | E | 35\n6 | F | 26\n7 | G | 30\nRun Code Online (Sandbox Code Playgroud)\n\n现在,我想要的是更新某些 ID 的年龄列,以便最终结果如下。
\n\nID | Name | Age\n----------------\n1 | A | 24\n2 | B | 22\n3 | C | 35\n4 | D | 50\n5 | E | 27\n6 | F | 26\n7 | G | 30 \nRun Code Online (Sandbox Code Playgroud)\n\n我更新了 ID = 2, 3, 4, 5 的行
\n\n如何通过单个 T-SQL 查询获得此结果?这只是一个示例表。在实际情况下,它是一个包含超过 1500 条数据的表,因此单独更新行会花费大量时间。
\n\n我找到了解决方案,但无法将其添加为答案。所以我决定编辑我自己的问题并给出答案。请参考以下网址了解更多信息:
\n\nwww.stackoverflow.com/questions/16932526/\xe2\x80\xa6
\n\n UPDATE e \n SET age = t.age \n FROM table e \n JOIN ( VALUES \n (1, 26), \n (2, 30), \n (3, 35) ) \n t (id, age) ON t.id = e.id \nRun Code Online (Sandbox Code Playgroud)\n
BEGIN TRAN
UPDATE mytable SET age=99 WHERE id=2
UPDATE mytable SET age=99 WHERE id=3
UPDATE mytable SET age=99 WHERE id=4
UPDATE mytable SET age=99 WHERE id=5
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
看起来“愚蠢”,但它是单个查询。
你应该参考更新声明。现在有很多方法可以实现你想要的,例如,你可以在这里看到。一个简单的例子是:
UPDATE mytable SET
Age= CASE WHEN id=2 THEN 22 WHEN id=3 THEN 35 WHEN id=4 THEN 50 WHEN id=5 THEN 27 END
WHERE id IN (2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)
有关案例的更多阅读,请访问此处
| 归档时间: |
|
| 查看次数: |
17070 次 |
| 最近记录: |