2014-11-14 54 views
-1

嘿傢伙我有這樣一個表結構與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

感謝

+0

'我不想在這裏使用select語句來查找值3',....爲什麼? – ekad 2014-11-14 12:59:28

+1

@ekad cuz我想知道是否有任何功能找到最新的更新值 – lovemysql 2014-11-14 13:00:12

+0

你喜歡mysql,不知道如何選擇它?它的簡單花花公子, 'SELECT age FROM CUSTOMERS WHERE id = YOUR_LAST_INSERTED_ID' – 2014-11-14 13:00:22

回答

3

最簡單的方法是添加一個字段updatetimeTIMESTAMP 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相同。

+0

可以請你發佈一個sql小提琴示例 – lovemysql 2014-11-14 13:06:36

+0

@lovemysql我已經爲你添加了完整的'CREATE'命令。我已經給出了答案中的完整代碼,用於創建表格並找到正確的行。 – 2014-11-14 13:10:31

+0

什麼是插入值實際上??你可以請提供它。我想添加任何值更新時間 – lovemysql 2014-11-14 13:12:20