【发布时间】:2015-04-28 18:05:15
【问题描述】:
我正在尝试找出一种方法来更新记录,而不必列出需要更新的每个列名。
例如,如果我可以使用类似于以下的内容,那就太好了:
// the parts inside braces are what I am trying to figure out
UPDATE Employee
SET {all columns, without listing each of them}
WITH {this record with id of '111' from other table}
WHERE employee_id = '100'
如果可以做到这一点,编写这样一个查询的最直接/最有效的方法是什么?
【问题讨论】:
-
你怎么知道为每一列分配什么值?
-
我只是想用新记录 (id=111) 中的任何内容覆盖旧记录 (id=100) 中的所有内容。因此,例如,即使没有列出像 first_name、last_name 这样的列名,此查询也会按顺序比较每一列并用不同的值覆盖所有列。这有意义吗?
-
没有实用的方法。您可以生成代码或执行删除-插入对。在 99% 的情况下,两者都不实用。
-
您可以删除现有的行条目,然后执行 INSERT 吗?这样做依赖于序数列定位,通常不是最佳做法。
-
@MichaelG - 但是,您仍然需要列出每一列才能使用 INSERT,对吧?或者有没有办法通过只传递唯一的记录 id 来简单地插入记录?
标签: sql sql-update