두 개의 MS Access 테이블이 있습니다.
table1
ID Country Dat Val
1 Australia 01.10.2021 10
2 Canada 01.10.2021 100
3 Japan 01.10.2021 1000
4 Australia 02.10.2021 20
5 Canada 02.10.2021 200
6 Japan 02.10.2021 2000
과
table2
ID Country Dat Val
1 Canada 01.10.2021 50000
2 Greece 01.10.2021 50100
3 Canada 02.10.2021 60000
4 Greece 02.10.2021 60100
이 SQL 코드를 사용 하면 10 개의 행을 제공하는 두 개의 테이블 을 병합 할 수 있습니다 .
SELECT table2.Dat,
table2.Country,
table2.Val
FROM table2
LEFT JOIN table1
ON (table1.Dat = table2.Dat)
AND (table1.Country = table2.Country)
UNION ALL
SELECT table1.Dat,
table1.Country,
table1.Val
FROM table1
LEFT JOIN table2
ON (table1.Dat = table2.Dat)
AND (table1.Country = table2.Country)
ORDER BY table2.Dat,
table2.Country;
그리고 "날짜"및 "국가"기준에 따라 중복을 제공합니다.
질문
table1과 table2의 "Date"와 "Country"가 동일한 경우 두 테이블을 병합하려는 경우 코드가 어떻게 표시되어야하는지 궁금합니다. 둘 다가 아닌 table2 행이 선택됩니다.
즉, 얼마나 걸릴 표 1과 표 2에서 모든 고유 행이 일치하지 않는 기준 "날짜"와 "나라",뿐만 아니라주고 우선 순위에 표 2 때 두 테이블의 행이 일치 기준 "날짜"와 "나라를" ?
( "날짜 + 국가"번들은 각 테이블 내에서 고유합니다. 즉, 하나의 테이블에 "데이터 + 국가"가 하나만 있습니다.)
즉, 결과를 다음과 같이 표시 하기 위해 어떤 쿼리를 사용할 수 있습니까? 즉, 날짜 + 국가 중복이없는 8 개 행?
Expected Result
Dat Country Val
01.10.2021 Australia 10
01.10.2021 Canada 50000
01.10.2021 Greece 50100
01.10.2021 Japan 1000
02.10.2021 Australia 20
02.10.2021 Canada 60000
02.10.2021 Greece 60100
02.10.2021 Japan 2000
그리고 이와 같은 몇 가지 기준에 따라 테이블을 병합 하기 위해 이러한 SQL 스크립트를 만드는 좋은 방법은 무엇일까요?
필요한 것은 UNION ALL
2 개의 테이블과 NOT EXISTS
다음 WHERE
항목에 사용 하는 것 입니다 table1
.
SELECT t1.Dat, t1.Country, t1.Val FROM table1 AS t1
WHERE NOT EXISTS (SELECT 1 FROM table2 AS t2 WHERE t2.Country = t1.Country AND t2.Dat = t1.Dat)
UNION ALL
SELECT Dat, Country, Val FROM table2
ORDER BY Dat, Country
결과 :
Dat Country Val
1/10/2021 Australia 10
1/10/2021 Canada 50000
1/10/2021 Greece 50100
1/10/2021 japan 1000
2/10/2021 Australia 20
2/10/2021 Canada 60000
2/10/2021 Greece 60100
2/10/2021 Japan 2000
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다