반응형
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 |