Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat MySQL 'Operand harus mengandungi 1 lajur'?

Bagaimana untuk Membetulkan Ralat MySQL 'Operand harus mengandungi 1 lajur'?

Mary-Kate Olsen
Lepaskan: 2025-01-12 15:27:43
asal
841 orang telah melayarinya

How to Fix the

Ralat MySQL "operand harus mengandungi 1 lajur" penyelesaian

Artikel ini akan menyelesaikan ralat "operand harus mengandungi 1 lajur" yang berlaku dalam pertanyaan MySQL. Ralat ini biasanya berlaku apabila subkueri mengembalikan berbilang lajur, tetapi pertanyaan luar hanya menjangkakan satu lajur.

Salah Faham:

Ralat "operand harus mengandungi 1 lajur" menunjukkan bahawa operan (di sini, subkueri) dijangka akan mengembalikan satu lajur, tetapi sebenarnya mengembalikan berbilang lajur, menyebabkan nombor lajur tidak sepadan.

Selesai Masalah:

Masalah ini boleh diselesaikan dengan mengubah suai pertanyaan untuk memastikan bahawa subkueri hanya mengembalikan satu lajur. Terdapat dua kaedah utama:

1. Gunakan JOIN:

Elakkan menggunakan subkueri dan gunakan terus JOIN untuk menyertai jadual users dengan jadual posts pada lajur posted_by. Kaedah ini lebih fleksibel apabila memilih lajur tertentu dalam jadual users.

<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

2. Pilih satu lajur daripada subkueri:

Sebagai alternatif, anda boleh mengubah suai subkueri untuk mengembalikan hanya satu lajur menggunakan klausa GROUP BY. Walau bagaimanapun, pendekatan ini boleh mengakibatkan kehilangan data jika berbilang pengguna mempunyai ID yang sama.

<code class="language-sql">SELECT
topics.id,
topics.name,
topics.post_count,
topics.view_count,
COUNT(posts.solved_post) AS solved_post,
(SELECT users.username FROM users WHERE users.id = posts.posted_by GROUP BY users.id) AS posted_by
FROM topics
LEFT OUTER JOIN posts ON posts.topic_id = topics.id
WHERE topics.cat_id = :cat
GROUP BY topics.id</code>
Salin selepas log masuk

Kaedah yang anda pilih bergantung pada keperluan khusus anda dan struktur data. Pendekatan pertama (menggunakan JOIN) biasanya penyelesaian yang lebih cekap dan lebih jelas.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat MySQL '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