更新后获取以前的值 - MySql

时间:2015-07-29 11:15:41

标签: php mysql

我有一个包含id和名称的表

---    -----  
id     name
---    -----
1      pete

我的方案看起来像这样

$sql = "SELECT name FROM table_name WHERE id=1";

previous name - ''
current name - pete

现在我更新

$sql = "UPDATE table_name SET name='dave' WHERE id=1";

previous name - pete
updated name - dave

$sql = "UPDATE table_name SET name='Alan' WHERE id=1";

previous name - dave
updated name - Alan

因此,在我更新此表后,我想获取其中存在的先前记录。在我的例子中,我应该得到以前的名字以及更新的名字。如何实现这个

3 个答案:

答案 0 :(得分:3)

如果您要更新一个行并且您想要以前的名称,则可以使用变量:

set @prevname = '';

update table_name
    set name = if(@prevname := name, 'Alan', 'Alan')
    where id = 1;

select @prevname;

但是,我怀疑你真的想要一个缓慢变化的维度,update不是正确的操作。

答案 1 :(得分:2)

您可以使用桌面a trigger上的OLDNEW个关键字来实现这一目标。

虽然,我看到你把你的帖子标记为php,我想你想在php中获得旧值,为此,你必须在SELECT之前做UPDATE获取旧名称,并在SELECT之后获取另一个UPDATE以获取新名称。

答案 2 :(得分:0)

除非将其作为备份保存到表中,否则无法获取以前的名称。

如果要实现此目的,请在表格中再创建一列,并在更新为新列之前保存当前名称。