我有一个mysql表,其中包含name,perf,date_time列。我怎样才能只检索最新的MySQL行?
答案 0 :(得分:3)
...
ORDER BY `date and time` DESC
LIMIT 1
请注意,这不是最近添加的行,这是date and time
列中具有最“最近”值的行,这是我假设您正在寻找的。 p>
答案 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顺序中选择*