仅检索MySQL中的最新行

时间:2012-07-19 17:50:57

标签: python mysql

我有一个mysql表,其中包含name,perf,date_time列。我怎样才能只检索最新的MySQL行?

6 个答案:

答案 0 :(得分:3)

...
ORDER BY `date and time` DESC
LIMIT 1

请注意,这不是最近添加的行,这是date and time列中具有最“最近”值的行,这是我假设您正在寻找的。

答案 1 :(得分:3)

作为替代方案:

SELECT *
FROM yourtable
WHERE date_and_time = (SELECT MAX(date_and_time) FROM yourtable)

这个的优势在于可以快速插入多行并最终得到相同的时间戳。

答案 2 :(得分:2)

SELECT name,
       perf,
       date_and_time
FROM   table
ORDER  BY date_and_time DESC
LIMIT  1 

答案 3 :(得分:2)

SELECT * FROM table ORDER BY date, time LIMIT 1

答案 4 :(得分:2)

日期和时间是否分开?你会解释“最近”的意思吗?如果日期和时间是单独的字段或没有引用用户活动,并且您的意思是“最近由用户更新”而不是您可能想知道时间敏感表通常包含带有mysql标准时间戳的“updated_at”字段,例如'1989-11-09 12:34:32'。也许你应该考虑在你的模式中引入这样的字段。您可以设置触发器来更新日期时间信息,如下所示:

CREATE TRIGGER mytable_update BEFORE UPDATE ON `mytable`
FOR EACH ROW SET NEW.updated_at = NOW();

当然,您可以检索最近由select语句更新的记录,如上所述:

ORDER BY `updated_at` DESC LIMIT 1;

此外,时间敏感表通常有一个字段'created_at',当插入行时,该字段带有一个不变的时间戳集。它通常连接到触发器,如下所示:

CREATE TRIGGER mytable_create BEFORE INSERT ON `mytable`
FOR EACH ROW SET NEW.created_at = NOW(), NEW.updated_at = NOW(); 

上面的第一个触发器应该反映这一点,并带有另外的声明带来created_at信息:

NEW.created_at = OLD.created_at;

如果您使用框架(如Django,如标记Python),则可由ORM处理。

答案 5 :(得分:-1)

通过date_and_time DESC(对于sql server)从tablename order中选择top 1 *

通过date_and_time DESC限制1(对于mysql)从taablename顺序中选择*