Мне нужно получить самые новые записи из нижележащей таблицы для каждого имени индикатора, например GI данных 2015-11-16 и GO 2015-11-14.Получить самые новые записи из таблицы mysql по имени столбца
Как я могу это достичь?
Благодаря
Мне нужно получить самые новые записи из нижележащей таблицы для каждого имени индикатора, например GI данных 2015-11-16 и GO 2015-11-14.Получить самые новые записи из таблицы mysql по имени столбца
Как я могу это достичь?
Благодаря
Есть много способов для достижения этой цели и называются group wise maximum
https://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html
select t1.* from table_name t1
join (
select indicator_name,max(indicator_date) as indicator_date from table_name
group by indicator_name
)t2
on t1.indicator_name = t2.indicator_name
and t1.indicator_date = t2.indicator_date
Если индикатор_значение уникален для каждого имени_имя, то это будет мой выбор решения – Kickstart
SELECT * from yourtable
GROUP BY indicator_name
ORDER BY indicator_date DESC
Это неправильно. GROUP BY работает до ORDER BY, что означает, что будет выбрана случайная дата. Мне бы хотелось знать, как оправдаться. – Strawberry
Если вы хотите последнюю строку для каждого indicator_name
, то вы можете присвойте номер строки каждой группе строк indicator_name
и или der по indicator_date
в порядке убывания.
Запрос
select t1.indicator_id,
t1.indicator_name,
t1.indicator_value,
t1.indicator_date
from
(
select indicator_id,
indicator_name,
indicator_value,
indicator_date,
(
case indicator_name when @curA
then @curRow := @curRow + 1
else @curRow := 1 and @curA := indicator_name end
) + 1 as rn
from tblIndicators t,
(select @curRow := 0, @curA := '') r
order by indicator_name,indicator_date desc
)t1
where t1.rn = 1;
Попробуйте это ...
SELECT * FROM table_name ORDER BY indicator_name,indicator_date DESC
Это наиболее часто задаваемый вопрос под этим тегом на SO. Он также правильно ответил довольно часто. Это пародия на намерения этого форума, тогда только один из предложенных ниже ответов правилен. – Strawberry