我试图选择最近添加的所有项目。
我必须找到最后添加的考试(有时候更多的考试如下所示)
以下是数据库的示例。
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
)
第二个查询将找到最后添加的名称(与开始日期相同),将其传递给第一个选择,并将根据名称选择所有其他测试。
答案 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)