Bagaimana untuk Menyelesaikan \'Ralat: Penyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza\' dalam Operasi UNION?

Susan Sarandon
Lepaskan: 2024-10-30 12:02:26
asal
188 orang telah melayarinya

How to Resolve

Ralat: Percanggahan dalam Kiraan Lajur dalam Penyata SELECT

Apabila melaksanakan pertanyaan yang melibatkan berbilang pernyataan SELECT, seperti operasi UNION, adalah penting untuk memastikan bahawa setiap pernyataan mengandungi bilangan lajur yang sama. Kegagalan berbuat demikian akan mengakibatkan ralat "Ralat: Pernyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza".

Untuk menyelesaikan isu ini, pertanyaan perlu ditulis semula supaya setiap klausa SELECT mempunyai nombor yang sama lajur dengan jenis data yang serasi. Sebagai contoh, pertanyaan yang disediakan:

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

mengalami ralat ini kerana SELECT pertama mengandungi 4 lajur ("", u1., u2.*), manakala SELECT kedua sahaja mengembalikan satu lajur ("fid2").

Tulisan semula yang lebih mudah yang mengekalkan fungsi yang dimaksudkan ialah:

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

Dengan memastikan kedua-dua pernyataan SELECT mengembalikan bilangan lajur yang sama dengan padanan jenis data, pertanyaan boleh dilaksanakan tanpa menghadapi ralat kiraan lajur. Selain itu, ia menghapuskan cantuman luar yang tidak diperlukan, yang kelihatan berlebihan berdasarkan skema yang disediakan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Ralat: Penyataan SELECT yang digunakan mempunyai bilangan lajur yang berbeza\' dalam Operasi 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!