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

Bidang baris mana yang dikembalikan saat Pengelompokan dengan MySQL?

Id mana yang akan dikembalikan ( 1, 2, atau 3 )?

J:Server akan memilih untuk semua catatan yang memiliki nama yang sama dengan id yang diinginkannya (kemungkinan besar yang tercepat untuk diambil, yang tidak dapat diprediksi). Mengutip dokumentasi resmi:

Lebih banyak informasi dalam tautan ini .

Id mana yang akan diurutkan oleh kueri ini ( Sama seperti yang dikembalikan? ... lihat pertanyaan 1 )?

Tidak masuk akal untuk mencari tahu dalam urutan apa data yang diambil akan dikembalikan karena Anda tidak dapat memprediksi hasil yang akan Anda dapatkan. Namun, kemungkinan besar Anda mendapatkan hasil yang diurutkan berdasarkan kolom ID yang tidak dapat diprediksi.

Dapatkah Anda mengontrol id mana yang dikembalikan/digunakan untuk pemesanan? misalnya. Kembalikan id terbesar, atau id pertama dari GROUP.

Anda harus berasumsi pada titik ini bahwa Anda tidak bisa. Baca lagi dokumentasinya.

Membuat segalanya menjadi lebih jelas:Anda tidak dapat memprediksi hasil dari klausa GROUP BY yang digunakan secara tidak benar. Masalah utama dengan MySQL adalah memungkinkan Anda untuk menggunakannya dengan cara yang tidak standar tetapi Anda perlu tahu cara memanfaatkan fitur itu. Poin utama di baliknya adalah mengelompokkan berdasarkan bidang yang Anda tahu akan selalu sama. misal:

SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id

Di sini, Anda tahu name akan menjadi unik sebagai id secara fungsional menentukan name . Jadi hasil yang Anda tahu valid. Jika Anda mengelompokkan juga berdasarkan nama, kueri ini akan menjadi lebih standar tetapi kinerjanya akan sedikit lebih buruk di MySQL.

Sebagai catatan terakhir, pertimbangkan bahwa, menurut pengalaman saya, hasil dalam kueri non-standar untuk bidang yang dipilih dan tidak dikelompokkan biasanya adalah yang akan Anda dapatkan dengan menerapkan GROUP BY dan kemudian ORDER BY di lapangan itu. Itulah mengapa sering kali sepertinya bekerja. Namun, jika Anda terus menguji, Anda akhirnya akan mengetahui bahwa ini terjadi 95% dari waktu. Dan Anda tidak bisa mengandalkan nomor itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan MySQL dan SQLite dalam SQL

  2. Apa itu Resource#?

  3. Merancang acara tanggal-waktu yang tidak tumpang tindih

  4. Mana yang lebih baik, gabungan implisit atau eksplisit?

  5. Bagaimana cara menangani Kesalahan Kunci Asing MySQL di Php?