यूनियन (UNION
और UNION ALL
) के लिए आवश्यक है कि UNION'd होने वाली सभी क्वेरीज़:
- चयन खंड में समान संख्या में स्तंभ
- कॉलम डेटा प्रकार को प्रत्येक स्थान पर मेल खाना चाहिए
आपकी क्वेरी में है:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
मेरे पास सबसे आसान री-राइट है:
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;
आपने USERS
. में शामिल होना छोड़ दिया है तालिका दो बार, लेकिन ऐसा प्रतीत नहीं होता कि जानकारी का उपयोग कर रहा है।