source

MySQL: FULL OUTER JOIN - 열 하나를 병합하려면 어떻게 해야 합니까?

manycodes 2023. 8. 29. 20:45
반응형

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

반응형