Ralat MySQL: "Operasi harus mengandungi 1 lajur" penyelesaian
Dalam pertanyaan SQL baru-baru ini, pembangun mengalami ralat yang mengelirukan: "Operan harus mengandungi 1 lajur." Ralat itu menghentikan kemajuan mereka, tetapi selepas penyiasatan teliti, penyelesaian ditemui.
Pertanyaan yang dipersoalkan cuba mendapatkan semula data daripada dua jadual, 'topik' dan 'siaran' serta mengandungi statistik untuk subkueri yang memilih dua lajur daripada jadual 'pengguna'. Walau bagaimanapun, subkueri ini cuba menayangkan dua lajur menjadi satu, mengakibatkan mesej ralat.
Ralat pemahaman:
Ralat "operand harus mengandungi 1 lajur" berlaku apabila pertanyaan cuba beroperasi pada berbilang lajur (cth., agregat) seolah-olah ia adalah satu lajur. Dalam kes khusus ini, subquery memilih kedua-dua 'nama pengguna' dan 'id' daripada jadual 'pengguna'.
Masalah diselesaikan:
Untuk menyelesaikan isu ini, subquery telah dikonfigurasikan semula untuk memilih hanya satu lajur dengan menyertai terus ke jadual 'pengguna'. Pendekatan ini membolehkan lebih fleksibiliti dalam memilih lajur yang diperlukan.
Pertanyaan ditulis semula:
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT(posts.solved_post) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id</code>
Kelebihan sambungan terus:
Menyertai terus ke jadual 'pengguna' memberikan beberapa faedah:
Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Saya Mengembalikan 'Operand harus mengandungi 1 lajur'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!