SQL-запрос
foo, max(bar)
group by foo
?
group by foo
?
любая или случайная? да, какая субд?
в mysql достаточно
SELECT foo, bar FROM t GROUP BY foo
mysql> select foo,bar from t group by foo;
+------+------+
| foo | bar |
+------+------+
| 1 | 10 |
| 2 | 13 |
| 3 | 15 |
+------+------+
в mysql достаточноКлево, а я думал нужна какая-нибудь агрегирующая функция для group by.
code:SELECT foo, bar FROM t GROUP BY foo
Это НЕ клево. Не надо писать говнокод только потому, что это позволяет говносубд. В ракле и мсскл, разумеется, тоже есть недокументированные фичи, которые надо знать и стоит использовать, но тут на мой взгляд совершенно не тот случай
Аргументируйте.
что именно...
без комментариев
ну, допустим, нарастающий итог
Сразу говорю, что мускуль комментировать не буду, ибо думается вопрос именно ему был посвящен. Возможности надстроек над чистым сиквелом типа PL/SQL или T-SQL - про это вообще глупо спорить, конечно, не знаю, но когда скрипт на простую вставку INSERT... VALUES... отрабатывает без ошибок, но данных не появляется (насколько я понимаю, из-за проблем кодировок - сталкивался)... ну хз, Мускуль спасет всех, особенно имея в виду отстойные бесплатные сервера типа MSSQL Express, Oracle (без поддержки) и Postgre
PS Прошу прощения, если напутал с лицензиями - не заморачивался, сам много работаю именно с MSSQL если что
Это НЕ клево. Не надо писать говнокод только потому, что это позволяет говносубд.
без комментариев
В раклеПрошу прощения, букву пропустил - в Оракле. по конкретным случаям не силен, не так много работал, но уверен, что есть
в мсскл
ну, допустим, нарастающий итог
Сразу говорю, что мускуль комментировать не буду, ибо думается вопрос именно ему был посвящен. Возможности надстроек над чистым сиквелом типа PL/SQL или T-SQL - про это вообще глупо спорить, конечно, не знаю, но когда скрипт на простую вставку INSERT... VALUES... отрабатывает без ошибок, но данных не появляется (насколько я понимаю, из-за проблем кодировок - сталкивался)... ну хз, Мускуль спасет всех, особенно имея в виду отстойные бесплатные сервера типа MSSQL Express, Oracle (без поддержки) и Postgre
PS Прошу прощения, если напутал с лицензиями - не заморачивался, сам много работаю именно с MSSQL если что
отстойные бесплатные сервера типа MSSQL Express, Oracle (без поддержки) и PostgreО, да!
А еще в мускуле есть расширение "LIMIT m, n", которого, насколько я знаю, сейчас нет в postgres (не помню, как в mssql и хз, как в оракле). Так что же это - тоже говнофича в говносубд и ей пользоваться не нужно? Хуйню вы какую-то морозите. Ну ввели бы какую-нибудь функцию FIRST, чтобы была т.н. аггрегация и тот же самый эффект достигался запросом
Только нафига? Какая-то излишняя тяга к усложнению и выебонам.
SELECT foo, FIRST(bar) FROM t GROUP BY foo
Только нафига? Какая-то излишняя тяга к усложнению и выебонам.
Сев, вот конкретно на этот случай мы напоролись уже. Система работает с mysql и pg. Вот на pg подобный запрос не работает.
Ну так надо уточнять, для чего конкретно пишется запрос. Во всём топике это так и не конкретизировали.
в постгресе есть LIMIT n OFFSET m (не договорились они, к сожалению)
агрегатные функции, умеющие пропускать все значения, начиная с некоторого момента, думаю, будут полезны. В postgresql (где можно писать свои агрегатные функции) такой возможности нет, да и про другие субд не слышал, чтобы такое было, а жаль
агрегатные функции, умеющие пропускать все значения, начиная с некоторого момента, думаю, будут полезны. В postgresql (где можно писать свои агрегатные функции) такой возможности нет, да и про другие субд не слышал, чтобы такое было, а жаль
В postgresql (где можно писать свои агрегатные функции) такой возможности нет, да и про другие субд не слышал, чтобы такое было, а жальВ Oracle можно
Оставить комментарий
Gaishnik
Есть таблица с полями foo и bar.create table t(foo integer, bar integer);
В выборке для каждого значения поля foo, представленного в таблице, должна быть одна запись. Соответствующее значение поля bar любое из возможных(если их несколько). Пример:
insert into t(foo,bar) values(1,101,111,122,132,143,15);
foo bar
1 10
1 11
1 12
2 13
2 14
3 15
Выборка
1 11
2 13
3 15
В голову не идет ничего приличнее, чем
select t_dist.foo, (select bar from t where foo=t_dist.foo limit 1) from (select distinct foo from t) as t_dist