Join
SQL 查詢 - 我是否需要完全連接才能生成此組合結果?
兩個表的結構如下:
Table1 Table2 ---------------- ---------------- id, time, x id, time, y, z 1 1 1 1 2 2 2 1 2 2 1 3 3 3
我正在嘗試加入表格以獲得如下所示的結果:
Result -------------------------------- id, time, x, y, z 1 1 1 1 2 2 2 2 1 3 3 3
我能夠通過這樣的查詢獲得部分結果,但它返回 table2 中的所有值(包括不需要的 id)以及 table1 的連接值。
select * from Table1 full outer join Table2 on Table1.time=Table2.time and Table1.id ='1' and Table2.id ='1' order by Table2.time
有誰知道如何解決?如果這很重要,我正在嘗試在 AWS Athena/Prestodb 中執行此查詢。
謝謝您的幫助!
我不使用 amazon-presto,但我想知道您是否可以根據您的需要調整此 SQL Server 解決方案。
--demo setup drop table if exists table1; drop table if exists table2; CREATE TABLE Table1 (id int, time int, x int) ; INSERT INTO Table1 (id, time, x) VALUES (1, 1, 1), (1, 2, 2) ; CREATE TABLE Table2 (id int, time int, y int, z int) ; INSERT INTO Table2 (id, time, y, z) VALUES (1, 2, 2, 2), (1, 3, 3, 3) ; ------------------ --solution ;with cte as ( select id, time from Table1 union select id, time from Table2 ) SELECT c.id, c.TIME, t1.x, t2.y, t2.z FROM cte c LEFT JOIN table1 t1 ON t1.id = c.id AND t1.TIME = c.TIME LEFT JOIN table2 t2 ON t2.id = c.id AND t2.TIME = c.TIME;
| id | TIME | x | y | z | |----|------|------|------|------| | 1 | 1 | 1 | NULL | NULL | | 1 | 2 | 2 | 2 | 2 | | 1 | 3 | NULL | 3 | 3 |