집 >데이터 베이스 >MySQL 튜토리얼 >MySQL UNION 작업에서 \'오류 1222(21000): 사용된 SELECT 문에 다른 개수의 열이 있습니다\'를 수정하는 방법은 무엇입니까?
오류: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!