我有两张表:
A [ID, column1, column2, column3]
B [ID, column1, column2, column3, column4]
A
将始终是B
的子集(这意味着A
的所有列也在B
中)。
我想用B
中的特定ID
更新一条记录,该记录包含来自A
的A
所有列的数据。此ID
在A
和B
中都存在。
有没有一种UPDATE
语法或其他方法可以在不指定列名的情况下做到这一点,只需说"set all column of A“
我使用的是PostgreSQL,因此也可以接受特定的非标准命令(但不是首选命令)。
发布于 2010-05-04 23:41:31
您可以使用非标准的FROM子句。
UPDATE b
SET column1 = a.column1,
column2 = a.column2,
column3 = a.column3
FROM a
WHERE a.id = b.id
AND b.id = 1
发布于 2014-05-17 02:56:33
这是一个很大的帮助。代码
UPDATE tbl_b b
SET ( column1, column2, column3)
= (a.column1, a.column2, a.column3)
FROM tbl_a a
WHERE b.id = 1
AND a.id = b.id;
效果很好。
请注意,您需要在
From "tbl_a" a
才能让它工作。
发布于 2010-05-04 16:48:10
不一定如您所愿,但也许使用postgres继承可能会有所帮助?
CREATE TABLE A (
ID int,
column1 text,
column2 text,
column3 text
);
CREATE TABLE B (
column4 text
) INHERITS (A);
这就避免了更新B的需要。
但一定要阅读所有的details。
否则,您所请求的内容就不被认为是一种好的实践--不鼓励使用SELECT * ...
的视图之类的动态内容(因为这种轻微的便利可能会破坏更多的东西,而不是帮助事情),并且您所请求的内容对于UPDATE ... SET
命令来说是等效的。
https://stackoverflow.com/questions/2763817
复制相似问题