我有一个包含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
因此,在我更新此表后,我想获取其中存在的先前记录。在我的例子中,我应该得到以前的名字以及更新的名字。如何实现这个
答案 0 :(得分:3)
如果您要更新一个行并且您想要以前的名称,则可以使用变量:
set @prevname = '';
update table_name
set name = if(@prevname := name, 'Alan', 'Alan')
where id = 1;
select @prevname;
但是,我怀疑你真的想要一个缓慢变化的维度,update
不是正确的操作。
答案 1 :(得分:2)
您可以使用桌面a trigger上的OLD
和NEW
个关键字来实现这一目标。
虽然,我看到你把你的帖子标记为php,我想你想在php中获得旧值,为此,你必须在SELECT
之前做UPDATE
获取旧名称,并在SELECT
之后获取另一个UPDATE
以获取新名称。
答案 2 :(得分:0)
除非将其作为备份保存到表中,否则无法获取以前的名称。
如果要实现此目的,请在表格中再创建一列,并在更新为新列之前保存当前名称。