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

时间:2011-09-29 15:33:40

标签: mysql select subquery

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

我必须找到最后添加的考试(有时候更多的考试如下所示)

以下是数据库的示例。

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
)

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

3 个答案:

答案 0 :(得分:3)

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);

答案 1 :(得分:1)

我会用

SELECT * FROM me_tests ORDER BY start_date DESC LIMIT 1

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

答案 2 :(得分:1)

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

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

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