> 데이터 베이스 > MySQL 튜토리얼 > UNION 작업에서 \'오류: 사용된 SELECT 문의 열 수가 다릅니다\'를 해결하는 방법은 무엇입니까?

UNION 작업에서 \'오류: 사용된 SELECT 문의 열 수가 다릅니다\'를 해결하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-30 12:02:26
원래의
275명이 탐색했습니다.

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 < 1)
ORDER BY RAND()
LIMIT 6;
로그인 후 복사

에는 첫 번째 SELECT에 4개의 열("", u1., u2.*)이 포함되어 있지만 두 번째 SELECT에만 이 오류가 발생합니다. 단일 열("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 < 1
ORDER BY RAND()
LIMIT 6;
로그인 후 복사

두 SELECT 문 모두 일치하는 항목이 포함된 동일한 수의 열을 반환하도록 하는 것입니다. 데이터 형식을 사용하면 열 개수 오류가 발생하지 않고 쿼리를 실행할 수 있습니다. 또한 제공된 스키마를 기준으로 중복되어 보이는 불필요한 외부 조인을 제거합니다.

위 내용은 UNION 작업에서 \'오류: 사용된 SELECT 문의 열 수가 다릅니다\'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿