使用mysql查找最新的更新值

时间:2014-11-14 12:58:19

标签: php mysql

嘿伙计们,我有像

这样的表结构
 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2), 
   PRIMARY KEY (ID)
);


INSERT INTO  CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  
VALUES (1,'aff',2,3,5),
 VALUES (2,'blah',3,31,51);

假设我已经像

那样更新了我的表格
UPDATE CUSTOMERS
SET NAME = 'anewname'
WHERE AGE = 3;

所以我需要的是我只需要一个查询来查找最后更新的值,即3

我尝试使用触发器并尝试使用LAST_INSERTED_ID()。我也使用了TIMESTAMP但我可以获得值3.

PS ..我不想在这里使用select语句来查找值3。

由于

1 个答案:

答案 0 :(得分:3)

最简单的方法是添加类型为updatetime的字段TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

这样,该字段将自动为您更新,您可以提取具有最近更新时间戳的行:

SELECT * FROM CUSTOMERS ORDER BY updatetime DESC LIMIT 1;

请注意,如果您一起更新许多行,那么这将为您提供任意行,但这听起来好像是您想要的,因为您正在寻找单行。

现在你的桌子变成了:

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2), 
   PRIMARY KEY (ID),
   updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

无论何时插入或更新,该行的updatetime条目都将自动更新。

您的INSERT保持完全相同:

INSERT INTO  CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  
    VALUES (1,'aff',2,3,5),
    VALUES (2,'blah',3,31,51);

请注意,我没有在此指定updatetime的任何值:它会自动填充数据库。与UPDATE相同。