MySQL выбрать все последние добавленные запросы - PullRequest
1 голос
/ 29 сентября 2011

Я пытаюсь выбрать все элементы, которые были недавно добавлены.

Я должен найти последний добавленный экзамен (иногда больше того, который показан ниже)

Вот пример БД.

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 ]

3 голосов
/ 29 сентября 2011
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 голос
/ 29 сентября 2011

Что, если последние добавленные элементы были добавлены одновременно, но имеют разные имена?

В этом случае, я думаю, вы захотите запрос, подобный этому.

SELECT 
  * 
FROM me_tests 
WHERE start_date = (SELECT 
                      start_date
                    FROM me_tests 
                    ORDER BY start_date DESC LIMIT 1)
1 голос
/ 29 сентября 2011

Я бы использовал

SELECT * FROM me_tests ORDER BY start_date DESC LIMIT 1

... кроме использования * плохо, поэтому вы должны назвать все столбцы, которые хотите получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...