Menyelesaikan Masalah Pertanyaan SQL: Kiraan Baris Salah dan Penyelesaian GROUP BY
Pertanyaan SQL anda menghasilkan kiraan baris yang tidak tepat, menjumlahkan semua baris dan bukannya satu baris. Penyelesaiannya terletak pada menggunakan klausa GROUP BY
dalam subkueri yang bergabung dengan jadual messages_aura
. GROUP BY
mengagregatkan baris dengan nilai yang sama dalam lajur yang ditentukan, memberikan kiraan yang betul.
Masalah dan Penyelesaian:
Fasal LEFT JOIN
asal hingga messages_aura
tidak mempunyai klausa GROUP BY
:
<code class="language-sql">LEFT JOIN ( SELECT `ID` AS `AuraID`, `Status` AS `AuraStatus`, COUNT(*) AS `Aura` FROM messages_aura ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
Ini mengakibatkan kiraan Aura
yang salah kerana jumlah semua baris dalam messages_aura
. Menambah GROUP BY
membetulkan ini:
<code class="language-sql">LEFT JOIN ( SELECT `ID` AS `AuraID`, `Status` AS `AuraStatus`, COUNT(*) AS `Aura` FROM messages_aura GROUP BY AuraID, AuraStatus ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
Kini, setiap baris dalam messages_aura
dikenal pasti secara unik oleh AuraID
dan AuraStatus
, yang membawa kepada kiraan Aura
yang tepat. Fungsi COUNT(*)
mengagregat dengan betul untuk setiap gabungan unik AuraID
dan AuraStatus
.
Atas ialah kandungan terperinci Mengapakah pertanyaan SQL saya mengira semua baris dan bukannya baris individu, dan bagaimana saya boleh membetulkannya menggunakan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!