"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل \"الخطأ: تحتوي عبارات SELECT المستخدمة على عدد مختلف من الأعمدة\" في عمليات UNION؟

كيفية حل \"الخطأ: تحتوي عبارات SELECT المستخدمة على عدد مختلف من الأعمدة\" في عمليات UNION؟

تم النشر بتاريخ 2024-11-10
تصفح:612

How to Resolve \

خطأ: تناقضات في عدد الأعمدة في عبارات SELECT

عند تنفيذ استعلام يتضمن عبارات SELECT متعددة، مثل عملية UNION، فمن الضروري للتأكد من أن كل عبارة تحتوي على نفس عدد الأعمدة بالضبط. سيؤدي الفشل في القيام بذلك إلى ظهور الخطأ "خطأ: تحتوي عبارات SELECT المستخدمة على عدد مختلف من الأعمدة".

لحل هذه المشكلة، يجب إعادة كتابة الاستعلام بحيث يكون لكل جملة SELECT رقم متطابق من الأعمدة مع أنواع البيانات المتوافقة. على سبيل المثال، الاستعلام المقدم:

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 

يعاني من هذا الخطأ حيث أن التحديد الأول يحتوي على 4 أعمدة (""، u1.، u2.*)، بينما يقوم التحديد الثاني بإرجاع عمود واحد فقط ("fid2" ").

إعادة الكتابة الأكثر وضوحًا والتي تحافظ على الوظيفة المقصودة هي:

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 

من خلال التأكد من أن كلا عبارات SELECT ترجع نفس عدد الأعمدة مع أنواع البيانات المتطابقة، يمكن تنفيذ الاستعلام دون مواجهة خطأ عدد الأعمدة. بالإضافة إلى ذلك، فهو يزيل الصلات الخارجية غير الضرورية، والتي تبدو زائدة عن الحاجة بناءً على المخطط المقدم.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3