오류: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!