Как написать запрос для получения последних записей из таблицы базы данных - PullRequest
1 голос
/ 30 апреля 2019

Я создал таблицу, т. Е. table_1, которая имеет разные поля.Я хочу написать query для получения последних записей из столбца part_name1 с issue_priority на основе time.Столбец part_name1 может содержать одну и ту же запись с разными приоритетами, например p1, p2 или p3.Здесь я взял меньшее количество записей, но если у меня есть n записей, как извлечь самую последнюю из вставленных записей.

Здесь приведен только один пример.Пожалуйста, проверьте ссылку на данное изображение

**part_name1**      **issue_priority**    **time1**

    blower              p1                 03:15:00
    reverse             p2                 03:16:18
    blower              p2                 04:11:30
    reverse             p3                 04:44:05

Вывод: Из приведенной выше таблицы я хочу, чтобы вывод был таким, как указано ниже

blower       p2
reverse      p3 

imageссылка

Ответы [ 4 ]

1 голос
/ 30 апреля 2019

Используйте max (time1) вместо min (time1), чтобы получить последние вставленные записи.

SELECT t1.*
FROM table_1 t1
JOIN (
SELECT part_name1, max(time1) as maxtime1
FROM table_1 
GROUP BY part_name1 ) s1
ON (t1.part_name1  = s1.part_name1 AND t1.time1 = s1.maxtime1);
1 голос
/ 30 апреля 2019

Во-первых, вам нужно запросить самое позднее время для каждого part_name1.Это дает вам максимальные значения времени.

SELECT part_name1, max(time1) as maxtime1
FROM table_1
GROUP BY part_name1;

Если вам также нужны другие данные в таблице (например, issue_priority), вы должны использовать вышеприведенное в качестве подзапроса:

SELECT t1.*
FROM table_1 t1
JOIN (
    SELECT part_name1, max(time1) as maxtime1
    FROM table_1
    GROUP BY part_name1 ) s1
ON (t1.part_name1  = s1.part_name1 AND t1.time1 = s1.maxtime1);

Это вернет вам последнюю строку для каждого part_name1.Вы можете добавить еще LIMIT предложение, если хотите.

0 голосов
/ 30 апреля 2019

Вы можете использовать ORDER BY:

SELECT part_name1, issue_priority
FROM table_1
ORDER BY time1 DESC
LIMIT 2

Предел 2 даст вам две самые последние записи. Если вы удалите LIMIT, вы получите все записи, упорядоченные по time1, от самых новых до самых старых.

https://dev.mysql.com/doc/refman/8.0/en/order-by-optimization.html

0 голосов
/ 30 апреля 2019

Вам просто нужно использовать ORDER BY:

SELECT fields FROM table ORDER BY time1 DESC LIMIT 2;

В вашем случае поля - это part_name1, table - это имя вашей таблицы, а LIMIT 2 - потому, что вам нужны именно последние 2 записи (может бытьустановить на любое число).

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