首頁 >資料庫 >mysql教程 >如何修復 UNION 語句中的「錯誤 1222 (21000):使用的 SELECT 語句具有不同的列數」?

如何修復 UNION 語句中的「錯誤 1222 (21000):使用的 SELECT 語句具有不同的列數」?

Susan Sarandon
Susan Sarandon原創
2024-11-03 21:47:30406瀏覽

How to Fix

錯誤: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以及連接的用戶表中的欄位(u1u2)。但是,第二個SELECT 語句:

SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)

只傳回單一欄位:friends.fid2.

欄位符合的UNION 要求

欄位符合的UNION 要求

  • 要讓UNION 操作成功,所有合併的SELECT 語句必須遵守以下要求:
  • 符合列數:每個SELECT 語句必須傳回欄位相同。
匹配列資料型態:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn