【发布时间】:2018-12-04 10:28:17
【问题描述】:
我在 JSON 和 SQL Server 上看到了很多,但一直找不到我要找的东西。
我想通过从另一个表中检索 JSON 值来更新一个表中的列。
假设我有下表:
表格:人
+-------+-----------+
| id | name |
+-------+-----------+
| 1 | John |
| 2 | Mary |
| 3 | Jeff |
| 4 | Bill |
| 5 | Bob |
+-------+-----------+
让我们假设我有另一个表,其中填充了 JSON 行,如下所示:
表格:存档
+-------+----------------------------------------------------------------+
| id | json |
+-------+----------------------------------------------------------------+
| 1 |[{ "Column":"name","values": { "old": "Jeff", "new": "John"}}] |
| 2 |[{ "Column":"name","values": { "old": "Rose", "new": "Mary"}}] |
+-------+----------------------------------------------------------------+
现在的想法是将约翰的名字改为杰夫。
UPDATE people
SET name = JSON_QUERY(archive.json, '$values.old')
WHERE ID = 1
上面的 SQL 可能没有意义,但我只是想了解我目前正在尝试做的事情的逻辑。我希望它有一些意义。
如果需要更多信息,请询问。
【问题讨论】:
-
两句话:我说得对吗,你混合了 old 和 new 值?我是否正确,以上只是一个示例,您正在寻找一个通用解决方案,其中更新可能会影响不同的列,甚至每行不止一个?至少 JSON 将允许对象数组中的更多元素。
标签: sql json sql-server tsql sql-update