3

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

4

6 回答 6

3

SELECT * FROM table ORDER BY date, time LIMIT 1

于 2012-07-19T17:52:52.783 回答
3
...
ORDER BY `date and time` DESC
LIMIT 1

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

于 2012-07-19T17:53:04.020 回答
3

作为备选:

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

这将具有捕获多行插入非常快并以相同时间戳结束的情况的优势。

于 2012-07-19T17:56:12.527 回答
2
SELECT name,
       perf,
       date_and_time
FROM   table
ORDER  BY date_and_time DESC
LIMIT  1 
于 2012-07-19T17:52:34.083 回答
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 处理。

于 2012-07-19T18:14:52.297 回答
-1

select top 1 * from tablename order by date_and_time DESC(对于 sql server)

select * from taablename order by date_and_time DESC 限制 1(对于 mysql)

于 2012-07-19T18:16:40.880 回答