Mysql
 sql >> база данни >  >> RDS >> Mysql

PostgreSQL GROUP BY различна от MySQL?

Изцяло несъответстващият на стандартите MySQL GROUP BY може да се емулира от DISTINCT ON на Postgres . Помислете за това:

MySQL:

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

Това осигурява 1 ред на стойност на a (коя, всъщност не знаете). Всъщност можете да се досетите, защото MySQL не знае за хеш агрегатите, така че вероятно ще използва сортиране... но ще сортира само по a , така че редът на редовете може да бъде случаен. Освен ако не използва индекс с няколко колони вместо сортиране. Е, така или иначе, не е посочено от заявката.

Postgres:

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

Това осигурява 1 ред на стойност на a , този ред ще бъде първият в сортирането според ORDER BY посочено от заявката. Просто.

Имайте предвид, че тук не е съвкупност, която изчислявам. Така че GROUP BY всъщност няма смисъл. DISTINCT ON има много повече смисъл.

Rails е женен за MySQL, така че не съм изненадан, че генерира SQL, който не работи в Postgres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да покажете съпоставянето на вашата връзка в MySQL

  2. Как да поръчам по дата в MySQL

  3. SEC_TO_TIME() Примери – MySQL

  4. TIMESTAMP() Примери – MySQL

  5. PDO обвързващи стойности за MySQL IN израз