Как составить запрос поиска уникальных значений с конца по условию?
Нужно сделать groupBy по uniqueid, и вывести только те группы где у последней записи в группе status='no';
То есть с этой таблице должна вывестись одна строка с id=3
select max(t1.id), t1.uniqueid, t1.status
from table1 t1
left join table1 t2 on t2.uniqueid = t1.uniqueid
and t2.status <> 'no'
where t2.id is null
group by t1.uniqueid
В итоговой выборке max(t1.id) выводится правильный, но id ему не соответствует. Получается что все остальные поля берутся не с последней, а с первой строки группы. Как сделать, чтобы итоговая выборка соответствовала строке с id=max(t1.id) ?
select t1.id, max(t1.id), t1.uniqueid, t1.status
from table1 t1
left join table1 t2 on t2.uniqueid = t1.uniqueid
and t2.status <> 'no'
where t2.id is null
group by t1.uniqueid
но зачем? у вас же есть id из max(t1.id). Это и есть ваш последний id который соответствует условиям. если вам надо - сделайте алиас. select max(t1.id) as id
А вообще, MySQL видимо пытается интерпретировать выражение без аггрегирующих функций и группировок как DISTINCT...
Я же говорю, в таблицу добавил поле дата, и дата должна соответствовать именно последнему id, а соответствует первому. Получается что одним запросом нужно получить все max(t1.id), а вторым уже по ним получить даты.