PostgreSQL GROUP BY, отличающийся от MySQL?

"Поддержка Свойства Java" была предложена для Java 7, но не превращала его на язык.

См. http://tech.puredanger.com/java7#property для большего количества ссылок и информации, если заинтересовано.

69
задан Dmitry 14 November 2017 в 08:54
поделиться

5 ответов

MySQL полностью не соответствует стандартам GROUP BY может быть эмулирован Postgres'ом DISTINCT ON . Рассмотрим это:

MySQL:

SELECT a,b,c,d,e FROM table GROUP BY a

Это дает по одной строке на каждое значение a (какое именно, вы точно не знаете). На самом деле вы можете догадаться, потому что MySQL не знает о хэш-агрегатах, поэтому он, вероятно, будет использовать сортировку ... но он будет выполнять сортировку только по a , поэтому порядок строк может быть случайным. Если только он не использует многоколоночный индекс вместо сортировки. Во всяком случае, это не указано в запросе.

Postgres:

SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c

Это доставляет по одной строке на значение a , эта строка будет первой в сортировке согласно ORDER BY , указанный в запросе. Просто.

Обратите внимание, что здесь я вычисляю не агрегат. Так что GROUP BY на самом деле не имеет смысла. DISTINCT ON имеет гораздо больше смысла.

Rails связан с MySQL, поэтому я не удивлен, что он генерирует SQL, который не работает в Postgres.

107
ответ дан 24 November 2019 в 13:46
поделиться

MySQL GROUP BY может использоваться без агрегатной функции (что противоречит стандарту SQL) и возвращает первую строку в группе (я не знаю, по каким критериям), в то время как PostgreSQL должен иметь агрегатную функцию (MAX, SUM и т. д.) для столбца, для которого создается предложение GROUP BY.

8
ответ дан 24 November 2019 в 13:46
поделиться

Если я правильно помню, в PostgreSQL вы должны добавить каждый столбец, который вы извлекаете из таблицы, где предложение GROUP BY применяется к предложению GROUP BY.

3
ответ дан 24 November 2019 в 13:46
поделиться

PostgreSQL более совместим с SQL, чем MySQL. Все поля - кроме вычисляемого поля с функцией агрегирования - в выходных данных должны присутствовать в предложении GROUP BY.

16
ответ дан 24 November 2019 в 13:46
поделиться

Я никогда не слышал, чтобы меня сертифицировали, чтобы сильно помочь, но я не живу в США и не в горячих точках IT-индустрии. Кто-то другой, возможно, сможет пролить больше света на эту тему, но я могу только предположить, что в более динамичном для ИТ городе, таком как Кремниевая долина или, возможно, Нью-Йорк, это может выглядеть немного более впечатляюще, если два или более кандидатов будут равномерно сопоставлены. Но если вы слабы в навыках проведения собеседований или мышления на месте и т. Д., Получение сертификата может не очень помочь.

Книга, которую вы упомянули, звучит хорошо и, вероятно, будет достаточной. Мне всегда нравилась серия head first, и в вашем случае, возможно, стоит взглянуть на Head First Java (также Кэти Сьерра и Берт Бейтс).

Некоторые другие сообщения, касающиеся SCJP, могут быть тоже помощи:

4
ответ дан 24 November 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: