>데이터 베이스 >MySQL 튜토리얼 >MySQL UNION 작업에서 \'오류 1222(21000): 사용된 SELECT 문에 다른 개수의 열이 있습니다\'를 수정하는 방법은 무엇입니까?

MySQL UNION 작업에서 \'오류 1222(21000): 사용된 SELECT 문에 다른 개수의 열이 있습니다\'를 수정하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-29 01:41:30250검색

How to Fix

오류: SELECT 문의 열 개수 불일치

MySQL에서 UNION 및 UNION ALL 작업에서는 참여하는 SELECT 문이 동일한 번호를 보유해야 합니다. SELECT 절 내의 열. 또한 열의 데이터 유형은 각 위치에서 일치해야 합니다.

제공된 쿼리는 이 규칙을 위반합니다.

<code class="sql">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 < 1)
ORDER BY RAND()
LIMIT 6;

첫 번째 SELECT 문은 "friends" 및 " users" 테이블을 반환하고, 두 번째 SELECT 문은 "friends" 테이블에서 "fid2" 열만 반환합니다. 열 개수의 불일치로 인해 다음 오류 메시지가 표시됩니다.

<code class="error">ERROR 1222 (21000): The used SELECT statements have a different number of columns from the following:

오류를 해결하려면 UNION 작업의 모든 SELECT 문에 동일한 개수의 열이 있는지 확인하세요. 이를 달성하는 가장 쉬운 방법은 각 SELECT 문에 명시적인 열 목록을 사용하는 것입니다.

<code class="sql">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;</code>

각 SELECT 문에 열을 명시적으로 지정함으로써 MySQL은 열 수와 데이터 유형이 일치하는지 확인할 수 있습니다. 오류 없이 UNION 연산을 진행합니다.

위 내용은 MySQL UNION 작업에서 \'오류 1222(21000): 사용된 SELECT 문에 다른 개수의 열이 있습니다\'를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.