繁体   English   中英

MySQL选择所有最后添加的查询

[英]MySQL select all last added query

我试图选择所有最近添加的项目。

我必须找到最近添加的考试是什么(有时不止一次,如下所示)

这是数据库的示例。

id  name                start_date  end_date    duration
4   Exam August 2011    24.8.2011   0000-00-00  20
3   Exam July 2011      28.7.2011   0000-00-00  20
5   Exam August 2011    24.8.2011   0000-00-00  20
6   Exam August 2011    24.8.2011   0000-00-00  20
25  Exam September 2011 26.9.2011   07.10.2011  20
26  Exam September 2011 26.9.2011   07.10.2011  20
27  Exam September 2011 26.9.2011   07.10.2011  20

这是即时通讯使用的查询,我的问题是有更好的方法吗? 一些优化?

SELECT * FROM me_tests WHERE name = (   
    SELECT name FROM me_tests ORDER BY start_date DESC LIMIT 1
)

第二个查询将查找最后添加的名称(与开始日期相同),将其传递给第一个选择,并根据该名称选择所有其他测试。

SELECT * FROM me_tests ORDER BY start_date DESC LIMIT 1

要么 -

SELECT * FROM me_tests 
WHERE start_date =
(SELECT MAX(start_date) FROM me_tests);

我会用

SELECT * FROM me_tests ORDER BY start_date DESC LIMIT 1

...除了使用*是不好的以外,因此您应该命名要检索的所有列。

如果最后添加的项目被同时添加但名称不同怎么办?

在那种情况下,我认为您会想要这样的查询。

SELECT 
  * 
FROM me_tests 
WHERE start_date = (SELECT 
                      start_date
                    FROM me_tests 
                    ORDER BY start_date DESC LIMIT 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM