「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > UNION 操作で「エラー: 使用された SELECT ステートメントの列数が異なります」を解決するにはどうすればよいですか?

UNION 操作で「エラー: 使用された SELECT ステートメントの列数が異なります」を解決するにはどうすればよいですか?

2024 年 11 月 10 日に公開
ブラウズ:818

How to Resolve \

エラー: SELECT ステートメントの列数の不一致

UNION 操作など、複数の SELECT ステートメントを含むクエリを実行する場合は、必須です。各ステートメントに正確に同じ数の列が含まれていることを確認します。これを行わないと、「エラー: 使用された 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 

では、最初の SELECT には 4 つの列 (""、u1.、u2.*) が含まれているのに対し、2 番目の SELECT では 1 つの列 ("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