Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan \'Ralat 1222 (21000): Penyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza\' dalam Operasi MySQL UNION?

Bagaimana untuk Membetulkan \'Ralat 1222 (21000): Penyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza\' dalam Operasi MySQL UNION?

Barbara Streisand
Lepaskan: 2024-10-29 01:41:30
asal
309 orang telah melayarinya

How to Fix

Ralat: Kiraan Lajur Discordant dalam Penyata SELECT

Dalam MySQL, UNION dan UNION ALL operasi menuntut pernyataan SELECT yang mengambil bahagian mempunyai nombor yang sama lajur dalam klausa SELECT mereka. Selain itu, jenis data lajur mesti sepadan pada setiap kedudukan.

Pertanyaan yang disediakan melanggar peraturan ini:

<code class="sql">SELECT * FROM friends
LEFT JOIN users AS u1 ON users.uid = friends.fid1
LEFT JOIN users AS u2 ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;
Salin selepas log masuk

Pernyataan SELECT pertama mengembalikan semua lajur daripada "rakan" dan " pengguna", manakala pernyataan SELECT kedua hanya mengembalikan lajur "fid2" daripada jadual "rakan". Percanggahan dalam kiraan lajur ini membawa kepada mesej ralat berikut:

<code class="error">ERROR 1222 (21000): The used SELECT statements have a different number of columns from the following:
Salin selepas log masuk

Untuk menyelesaikan ralat, pastikan semua pernyataan SELECT dalam operasi UNION mempunyai bilangan lajur yang sama. Cara paling mudah untuk mencapai ini adalah dengan menggunakan senarai lajur yang jelas dalam setiap pernyataan SELECT:

<code class="sql">SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid2
WHERE f.fid1 = 1
AND f.fid2 > 1
UNION
SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid1
WHERE f.fid2 = 1
AND f.fid1 < 1
ORDER BY RAND()
LIMIT 6;</code>
Salin selepas log masuk

Dengan menyatakan secara eksplisit lajur dalam setiap pernyataan SELECT, MySQL boleh memastikan bahawa kiraan lajur dan jenis data sepadan, membolehkan operasi KESATUAN untuk diteruskan tanpa kesilapan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Ralat 1222 (21000): Penyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza\' dalam Operasi MySQL UNION?. 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