UNION 연산자를 활용하는 쿼리를 실행할 때 관련된 모든 개별 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;
오류 메시지는 UNION으로 조인된 두 SELECT 문 사이의 열 개수 불일치를 나타냅니다. 특히 첫 번째 SELECT 문은 관련된 테이블의 모든 열을 반환하고 두 번째 문은 fid2 열만 가져옵니다.
이 문제를 해결하려면 두 번째 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>
또는 UNION ALL 연산자를 사용하여 다양한 열 개수를 포함하는 SELECT 문을 허용할 수도 있습니다. 그러나 일치하지 않는 열은 NULL 값으로 채워지므로 모든 경우에 바람직하지 않을 수 있습니다.
위 내용은 UNION을 사용할 때 \'Select 문의 서로 다른 열 개수\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!