更新SQL中保留旧值的行

时间:2012-12-28 08:14:26

标签: sql

我在SQL中的表

CREATE TABLE Person(
  Person_id INT PRIMARYKEY
  Person_name NVARCHAR(250)
)

表格中的数据:

INSERT INTO Person VALUES(1,'Peter')

我希望SQL中的更新行保留旧值。

UPDATE Person SET Person_name = 'Mary' WHERE Person_id = 1

此命令不起作用。我想在更新后列Person_name是值'Peter Mary'

2 个答案:

答案 0 :(得分:5)

这是你想成就的吗?

更新前:

ID | Person_name
---+---------------
1  | Peter

更新后:

ID | Person_name
---+---------------
1  | Peter Mary

如果你是使用MySQL,你可以使用这种方法:

UPDATE Person 
SET Person_name = CONCAT(Person_name, ' ', 'Mary') 
WHERE Person_id = 1

只需CONCAT一个空格和当前值的新值。

请不要忘记添加您正在使用的RDBMS。其他RDBMS可能具有不同的语法和可能性。

答案 1 :(得分:5)

您需要使用RDBMS并置运算符将字面值Mary与列Person_name的值连接起来。但是,您没有指定您正在使用的RDNMS。

以下是标准方式:

UPDATE Person 
SET Person_name = Person_name || ' ' || 'Mary' 
WHERE Person_id = 1;

对于SQL Server,请使用+运算符,如下所示:

UPDATE Person 
SET Person_name = Person_name + ' ' + 'Mary' 
WHERE Person_id = 1;