錯誤:UNIONed SELECT 語句之間的列計數差異
在提供的查詢中,您遇到錯誤:「ERROR 1222 ( 21000) :使用的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)
傳回三列:friends.fid1 、friends.fid2以及連接的用戶表中的欄位(u1 和u2)。但是,第二個SELECT 語句:
SELECT fid2 FROM friends WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)
只傳回單一欄位:friends.fid2.
欄位符合的UNION 要求
欄位符合的UNION 要求
SELECT 子句中每個位置的資料列的資料型別必須相符。
解決方案
SELECT friends.*, u.* FROM friends JOIN users AS u ON u.uid = friends.fid2 WHERE friends.fid1 = 1 AND friends.fid2 > 1 UNION SELECT friends.*, u.* FROM friends JOIN users AS u ON u.uid = friends.fid1 WHERE friends.fid2 = 1 AND friends.fid1 < 1 ORDER BY RAND() LIMIT 6;
要解決此錯誤,您必須確保 UNION 操作中的所有 SELECT 語句傳回具有符合資料類型的相同數量的資料列。例如,您可以將查詢重寫為:
在此修改後的查詢中,兩個 SELECT 語句傳回相同數量的列(五)且資料類型匹配,從而解決了錯誤。以上是如何修復 UNION 語句中的「錯誤 1222 (21000):使用的 SELECT 語句具有不同的列數」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!