Фильтр MYSQL таблица с максимальными датами - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы отфильтровать свою таблицу и выбрать все строки, где дата является последней датой в столбце с именем 'date'

Если возможно, я хотел бы использовать функцию 'where'.

Примечание. У меня много строк с одинаковой датой. например, у меня есть таблица с продажами за все дни по продуктам, но я хочу видеть продажи только за последние дни.

Ответы [ 3 ]

2 голосов
/ 13 июля 2020

Вы можете использовать этот запрос, чтобы получить весь список записей, где дата является самой последней:

SELECT *
FROM `table`
WHERE date=(SELECT MAX(date) 
            FROM `table`)
0 голосов
/ 13 июля 2020

Один из вариантов - использовать exists logi c:

SELECT *
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.date > t1.date);

На MySQL 8+, мне нравится использовать RANK здесь:

WITH cte AS (
    SELECT *, RANK() OVER (ORDER BY date DESC) rnk
    FROM yourTable
)

SELECT *
FROM cte
WHERE rnk = 1;

Вы можете также используйте подход Гордона с подзапросом для третьего варианта.

0 голосов
/ 13 июля 2020

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

select t.*
from t
where date = (select max(t2.date) from t t2);

Если вам нужен последний день для каждого продукта , вы должны использовать коррелированный подзапрос.

select t.*
from t
where date = (select max(t2.date) from t t2 where t2.product = t.product);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...