반응형
MySQL 여러 테이블에서 선택, 일치하지 않는 모든 열 및 행 유지
테이블이 2개 있습니다.
tableA:
| 이드 | 데이트 A | colA | ... |
|---|---|---|---|
| 1 | 2022-11-11 12:00:00 | A | |
| 2 | 2022-11-12 12:00:00 | B | |
| 3 | 2022-11-14 12:00:00 | C |
tableB:
| 이드 | 날짜 B | 콜비 | ... |
|---|---|---|---|
| 3 | 2022-11-05 12:00:00 | D | |
| 4 | 2022-11-06 12:00:00 | E | |
| 5 | 2022-11-13 12:00:00 | F |
모든 행을 하나의 결과에 넣고 열별로 정렬합니다.date
원하는 결과(열별로 정렬된 두 테이블의 행)date DESC):
| 이드 | 날짜. | colA | 콜비 | ... | ... |
|---|---|---|---|---|---|
| 3 | 2022-11-14 12:00:00 | C | |||
| 5 | 2022-11-13 12:00:00 | F | |||
| 2 | 2022-11-12 12:00:00 | B | |||
| 1 | 2022-11-11 12:00:00 | A | |||
| 4 | 2022-11-06 12:00:00 | E | |||
| 3 | 2022-11-05 12:00:00 | D |
테이블을 결합할 수는 있지만 테이블이 "찌그러진" 상태입니다.
SELECT
COALESCE(a.id, b.id) AS id,
COALESCE(a.dateA, b.dateB) AS date,
a.colA,
b.colB
FROM tableA AS a, tableB AS b
ORDER BY date DESC
사용하다UNION ALL그리고.ORDER BY이 경우 열을 열거해야 합니다.
select id, dateA as dateX, colA, null as colB from tableA
union all
select id, dateB, null, colB from tableB
order by dateX
union all두 개의 데이터 세트를 결합합니다.두 테이블에 서로 다른 열이 있기 때문에, 우리는 둘 다 배열해야 합니다.select동일한 열 집합을 반환하도록 절;null값을 사용하여 지정된 데이터 집합의 "숫자" 열을 채울 수 있습니다.
결과 집합 정렬에 대해서는 : MySQL에서 단일ORDER BY순식간에UNION ALL쿼리는 전체 결과 집합에 적용됩니다(결합된 후).쿼리는 이를 수행합니다(사용).dateX하위 쿼리에 생성된 열 별칭).
동일하게 공유하는 행을 표시하려는 경우id그리고.date하나의 행으로 GMB의 답변 위에 구축할 수 있습니다.
select id, dateX as date, max(colA) as colA, max(colB) as colB
from (
select id, dateA as dateX, colA, null as colB from tableA
union all
select id, dateB, null, colB from tableB
) as q
group by id, dateX
order by dateX
db-fiddle 참조
언급URL : https://stackoverflow.com/questions/74437964/mysql-select-from-multiple-tables-keep-all-columns-and-row-without-match
반응형
'programing' 카테고리의 다른 글
| 제외할 투영을 사용하여 Node.js MongoDB 찾기 _id가 여전히 반환합니다. (0) | 2023.07.15 |
|---|---|
| 파이썬에서 휠을 생성할 수 없는 이유는 무엇입니까? (0) | 2023.07.15 |
| 새 배열이 DOM에서 렌더링되지 않습니다. (0) | 2023.07.15 |
| Angular2 HTTP GET - 응답을 전체 개체로 캐스트 (0) | 2023.07.15 |
| https만 사용하여 타워를 설치하시겠습니까? (0) | 2023.07.15 |