-
Имеется таблица в mysql: id weight 1 1 2 2 3 3 4 4 Почему SELECT id, MAX(weight) FROM table возвращает 1-4, а не 4-4 ??? Желаемого можно добиться так, но что с максом? Это потому, что он аггрегатная функция? SELECT id, MAX(weight) AS mw FROM table GROUP BY id ORDER BY mw DESC LIMIT 1;
-
> возвращает 1-4, а не 4-4 ??? потому что условие на выбор требуемых записей пишут в where, предназначено оно для этого, а не оставляют телепатически догадываться о нужном движку базы. вообще странно, что что-то вернуло, по первому запросу, такое смешение статического поля и агрегата в mssql например является ошибкой.
-
а в O работает
create table OW_tmp_tmp_tmp as select * from ( select 1 iddqd, 1 idkfa from dual union all select 2 iddqd, 2 idkfa from dual union all select 3 iddqd, 3 idkfa from dual union all select 4 iddqd, 4 idkfa from dual )
select * from ( select iddqd, max(idkfa) idclip from OW_tmp_tmp_tmp group by iddqd ORDER BY idclip desc ) where rownum = 1
-
имхо, менее "напряжно" будет такой вариант SELECT id, weight FROM table WHERE weight = (SELECT id, MAX(weight) FROM table)
а может в mysql возможна и запись и попроще SELECT id, weight FROM table WHERE weight = MAX(weight)
> SELECT id, MAX(weight) AS mw FROM table GROUP BY id ORDER BY mw DESC LIMIT 1; тогда уж SELECT id, weight FROM table ORDER BY weight DESC LIMIT 1;
-
> SELECT id, weight FROM table WHERE weight = (SELECT id, > MAX(weight) FROM table)
именно такой работать не будет, боюсь :)
> ELECT id, weight FROM table ORDER BY weight DESC LIMIT 1;
логично
-
Всем спасибо! В пять утра глаза упорно не хотели замечать group by в примере из документации. SELECT student_name, MIN(test_score), MAX(test_score) FROM student GROUP BY student_name;
-
> именно такой работать не будет, боюсь :) опечатка, писал прямо в браузере id в под запросе естественно нужно убрать.
|