반응형
MySQL: FULL OUTER JOIN - 열 하나를 병합하려면 어떻게 해야 합니까?
MySQL의 FULL OUTER JOIN과 관련하여 질문이 있습니다.두 개 이상의 테이블이 있는 경우:
표 1 표 2id 값 id 값 21 a 1 b2 c 3 d3 e 4 f
이 쿼리를 사용하여 가입을 가져왔습니다.
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.`id`=table2.`id`
UNION
SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.`id`=table2.`id`
받는 사람:
id value1 id value21 a 1 b2c NULL NULL3 e 3 dNULL NULL 4 f
문제는 두 개의 ID 열을 동시에 하나의 열로 접지 못한다는 것입니다.
ID 값 1 값 21에이브2c NULL3에이드4 NULL f
그것을 어떻게 하는지에 대한 제안이 있습니까?
SELECT
COALESCE(t1.id, t2.id) as id,
t1.value1,
t2.value2
FROM table1 t1
FULL JOIN table2 t2 ON t1.id = t2.id;
사용:
SELECT t1.id,
t1.value,
t2.value2
FROM table1 t1
LEFT JOIN table2 t2 ON t2.id = t1.id
UNION
SELECT t2.id,
t1.value,
t2.value2
FROM TABLE1 t1
RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
그UNION
연산자는 행/레코드 중복을 제거하므로 열을 적절하게 정의/목록화해야 합니다.
스크립트:
DROP TABLE IF EXISTS `example`.`table1`;
CREATE TABLE `example`.`table1` (
`id` int(10) unsigned NOT NULL default '0',
`value` varchar(45) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO table1 VALUES (1, 'a'), (2, 'c'), (3, 'e');
DROP TABLE IF EXISTS `example`.`table2`;
CREATE TABLE `example`.`table2` (
`id` int(10) unsigned NOT NULL default '0',
`value2` varchar(45) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO table2 VALUES (1, 'b'), (3, 'd'), (4, 'f');
편집: 위의 고정 선
제가 생각하기에 당신이 하려는 것은 다음과 같이 FULL OUTER JOIN을 대신 사용하는 것이 좋습니다.
SELECT ISNULL(t1.id, t2.id) AS id, t1.value1, t2.value2
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.id = t2.id
언급URL : https://stackoverflow.com/questions/4415109/mysql-full-outer-join-how-do-i-merge-one-column
반응형
'source' 카테고리의 다른 글
MYSQL 데이터베이스의 모든 외부 키 삭제 (0) | 2023.08.29 |
---|---|
SQL null 값이 결과에 표시되지 않습니다. (0) | 2023.08.29 |
iOS 자동 레이아웃: 두 개의 동일한 너비의 버튼이 나란히 있습니다. (0) | 2023.08.29 |
Swift에서 Int를 16진수 문자열로 변환하는 방법 (0) | 2023.08.29 |
LEFT JOIN을 사용할 때와 INNER JOIN을 사용할 때? (0) | 2023.08.29 |