Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PostgreSQL GROUP BY berbeda dari MySQL?

GROUP BY yang benar-benar tidak sesuai standar MySQL dapat ditiru oleh Postgres' DISTINCT ON . Pertimbangkan ini:

MySQL:

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

Ini memberikan 1 baris per nilai a (yang mana, Anda tidak benar-benar tahu). Sebenarnya Anda bisa menebak, karena MySQL tidak tahu tentang agregat hash, jadi mungkin akan menggunakan sort... tetapi hanya akan mengurutkan a , sehingga urutan baris bisa acak. Kecuali jika menggunakan indeks multikolom alih-alih menyortir. Yah, bagaimanapun, itu tidak ditentukan oleh kueri.

Postgres:

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

Ini memberikan 1 baris per nilai a , baris ini akan menjadi baris pertama yang diurutkan menurut ORDER BY ditentukan oleh kueri. Sederhana.

Perhatikan bahwa di sini, ini bukan agregat yang saya hitung. Jadi GROUP BY sebenarnya tidak masuk akal. DISTINCT ON lebih masuk akal.

Rails digabungkan dengan MySQL, jadi saya tidak terkejut bahwa ini menghasilkan SQL yang tidak berfungsi di 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. TIMESTAMPADD() Contoh – MySQL

  2. mysql pilih nilai baris dinamis sebagai nama kolom, kolom lain sebagai nilai

  3. TIMESTAMP() Contoh – MySQL

  4. MySQL Bandingkan Database

  5. Menggunakan if(isset($_POST['submit'])) untuk tidak menampilkan gema saat skrip terbuka tidak berfungsi