[psql] Есть ли хаки чтобы вытаскивать id соответствующий max(val)?
А если строчек с таковым value несколько? Что тогда ты хочешь получить?
нету.
А если строчек с таковым value несколько? Что тогда ты хочешь получить?таблицу с ними?
ps
кошерное решение - это через аналитические функции (но их должна база держать)
Здесь варианта два, на мой взгляд. Либо эти записи как-то обрабатываются, тогда логичнее будет написать что-то типа
selec max(value) to max_value from table
update table set ...=... where value=%max_value%
Либо подразумевается, что такая запись гарантированно одна. Но тогда, какая принципиальная разница между id и value? При создании уникального индекса по value скорость работы запросов с join-ами будет ровно такой же.
нужных аналитических функций не нашел, зато нашел вот что:
User-Defined Aggregates.
адская штука и если будет желание, можно сделать то, что надо.
Либо подразумевается, что такая запись гарантированно одна. Но тогда, какая принципиальная разница между id и value? При создании уникального индекса по value скорость работы запросов с join-ами будет ровно такой же.value естественно не уникальны.
ключ и именно он нужен, чтобы потом по нему отсортировать.
в идеале подразумевается, что берется минимальный, если с одним и темже value их несколько
( но в принципе на это условие забить).
да, на всякий случай, чтобы камнями не кидали - в заголовке указана база )
select value, a, b, c from t
where value = (select max(value) from t)
ы?
ЗЫМожет, поэтому?
способы с джойнами и субселектами не предлагать - и сам так умею
А где у тебя группировка?
Оставить комментарий
SCIF32
то есть есть таблицаcreate table (id , ref_id, value)
хочется иметь на выходе
select id /* соответствующий ряду с выбранным max(value)*/, max(value) from table group by ref_id
вроде задача - дикий боян, но ничего путного найти не получилось.
ЗЫ
способы с джойнами и субселектами не предлагать - и сам так умею