MySQL запрос
select el1.name
from Elements el1 inner join
(select max(id) as maximum
from elements) el2
on el2.maximum = el1.id
ЗЫ это для MSSQL
Да, MSSQL с вложенным запросом работает. Но может есть патч какой именно для мускула, чтоб значения, по которым не производится группировка, брал из строки, которую функция max/min выбрала?
брал из строки, которую функция max/min выбрала?
то есть для этого случая не важно уже какую именно из строк вернет запрос, главное, чтобы в этой строке нужное поле было max/min.
брал из строки, которую функция max/min выбрала
Вот незадача, в старом мускуле вложенные запросы не работают, а через left join
SELECT s1.t, s1.id, s1.nameочень долго получается (больше часа работало, а результатов так и не дало).
FROM names s1
LEFT JOIN names s2 ON s1.id = s2.id AND s1.t < s2.t
WHERE s2.id IS NULL;
Оптимальным по скорости видится простой запрос с сортировкой по id,t. И затем уже в проге одним циклом пройтись и скопировать нужные строчки в результирующую табличку.
Агрегирующая функция возвращает не строку, а значение из диапазона. Тебе нужно чтоб в каждой группе по полю Id стояло еще и наименование этого Id, но их может быть несколько для группы с этим Id. Задай правило "какое наименование тебе нужно показать".
попробуй так
select max(t id, max(name)
from names
group by id
или
select max(t id, name
from names
group by id, name
нужно получить последнее (поэтому оно находится в строке с максимальным t) присвоенное идентификатору (id) имя (name).
Задай правило "какое наименование тебе нужно показать"
То есть, в результатах нужно видеть id, последнее имя, время присваивания этого имени. Одновременно (то есть с одинаковым t) одному идентификатору два имени присвоено быть не может.
desc или asc
UPDATE messages set threadid=id WHERE id=LAST_INSERT_ID
Вот так
примерно в 130 раз быстрее стало работать.
Оптимальным по скорости видится простой запрос с сортировкой по id,t. И затем уже в проге одним циклом пройтись и скопировать нужные строчки в результирующую табличку.
Оставить комментарий
Trofimovyoa
Как заставить MySQL возвращать значение name из той строки, в которой было найдено максимальное t?
(MySQL 3.23.55 вопреки ожиданиям возвращает в name первое попавшееся значение в группе.)