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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-03 21:47:30406검색

How to Fix

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

제공된 쿼리에서 오류가 발생했습니다: "ERROR 1222(21000) : 사용된 SELECT 문의 열 개수가 다릅니다." 이 오류는 UNION 문의 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)

3개의 열을 반환합니다: friends.fid1 , friends.fid2 및 조인된 사용자 테이블의 열(u1u2). 그러나 두 번째 SELECT 문:

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

단일 열만 반환합니다: friends.fid2.

열 일치를 위한 UNION 요구 사항

UNION 작업이 성공하려면 결합되는 모든 SELECT 문이 다음 요구 사항을 준수해야 합니다.

  • 일치하는 열 수: 각 SELECT 문은 다음을 반환해야 합니다. 동일한 개수의 열.
  • 열 데이터 유형 일치: SELECT 절의 각 위치에 있는 열의 데이터 유형이 일치해야 합니다.

해결 방법

이 오류를 해결하려면 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;

이 수정된 쿼리에서는 두 SELECT 문 모두 데이터 유형이 일치하는 동일한 수의 열(5개)을 반환하여 오류를 해결합니다.

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

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