2014-11-14 3 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 ..Я не хочу использовать оператор выбора здесь, чтобы найти значение 3.

Благодаря

+0

'Я не хочу использовать инструкцию select здесь, чтобы найти значение 3', .... почему? – ekad

+1

@ekad cuz Я хочу знать, есть ли какие-либо функции, чтобы найти последнее обновленное значение – lovemysql

+0

Вы любите mysql и не знаете, как его выбрать? Его простой чувак, 'SELECT age FROM CUSTOMERS WHERE id = YOUR_LAST_INSERTED_ID' –

ответ

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.

+0

не могли бы вы разместить пример скрипта sql – lovemysql

+0

@lovemysql Я добавил для вас полную команду 'CREATE'. Теперь я дал вам полный код в ответе, для создания таблицы и поиска правильной строки. –

+0

Каковы будут значения вставки на самом деле? .. Можете ли вы предоставить его тоже. Я хочу добавить какое-либо значение в updatetime – lovemysql

Смежные вопросы