Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan MySQL Saya Mengembalikan 'Operand harus mengandungi 1 lajur'?

Mengapa Pertanyaan MySQL Saya Mengembalikan 'Operand harus mengandungi 1 lajur'?

Susan Sarandon
Lepaskan: 2025-01-12 15:22:42
asal
791 orang telah melayarinya

Why Does My MySQL Query Return

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>
Salin selepas log masuk

Kelebihan sambungan terus:

Menyertai terus ke jadual 'pengguna' memberikan beberapa faedah:

  • Fleksibiliti: Memilih lajur daripada jadual 'pengguna' menjadi lebih mudah dan membenarkan hanya memilih data yang diperlukan.
  • Ringkaskan subkueri: Mengalih keluar subkueri memudahkan keseluruhan pertanyaan, menjadikannya lebih mudah dibaca dan diselenggara.
  • Prestasi yang dipertingkatkan: Menyertai jadual secara langsung kadangkala boleh meningkatkan prestasi dengan mengurangkan bilangan pertanyaan yang diperlukan untuk mendapatkan semula data yang diperlukan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan