Ralat Pengumpulan Tidak Sah dalam MySQL: Menyelesaikan Campuran Pengumpulan
Ralat "Campuran Pengumpulan Tidak Sah" dalam MySQL timbul apabila membandingkan nilai dengan set watak atau himpunan yang berbeza. Mari analisa isu ini dalam konteks pertanyaan anda:
<code class="sql">SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount FROM ratings WHERE month='Aug' AND username IN (SELECT username FROM users WHERE gender =1) GROUP BY username HAVING TheCount > 4 ORDER BY TheAverage DESC, TheCount DESC</code>
Setelah menambahkan baris berikut pada pertanyaan anda:
<code class="sql">AND username IN (SELECT username FROM users WHERE gender =1)</code>
anda mengalami ralat "Campuran tidak sah pengumpulan". Ini kerana lajur nama pengguna dalam jadual penilaian mungkin mempunyai pengumpulan yang berbeza daripada lajur nama pengguna dalam jadual pengguna.
Mengenal pasti Pengumpulan yang Salah:
Untuk menentukan yang mana lajur menyebabkan konflik pengumpulan, gunakan pertanyaan berikut:
<code class="sql">SELECT table_schema, table_name, column_name, character_set_name, collation_name FROM information_schema.columns WHERE collation_name = 'latin1_general_ci' ORDER BY table_schema, table_name, ordinal_position;</code>
Pertanyaan ini akan memaparkan jadual dan lajur yang mempunyai collation latin1_general_ci.
Menyelesaikan Isu:
Untuk menyelesaikan ralat, tukar jadual dengan pengumpulan yang salah kepada pengumpulan yang diperlukan, yang biasanya latin1_swedish_ci. Gunakan pertanyaan berikut:
<code class="sql">ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';</code>
dengan tbl_name ialah nama jadual dengan penyusunan yang salah.
Dengan menyelesaikan konflik penyusunan, pertanyaan yang diubah suai harus dilaksanakan dengan jayanya.
Atas ialah kandungan terperinci Bagaimanakah Saya Membetulkan Ralat \'Campuran Pengumpulan Tidak Sah\' dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!