SQL不会写了,求解

问题数据

有段SQL不清楚应该怎么写,希望各位指点,表数据如下所示

表A

IDDEPTHC1
13100哈哈
23300嘿嘿

表B

IDDEPTHC2
13200咯咯
23300吼吼
问题描述

ID为主键,在SQL中没啥作用,DEPTH代表深度,主要是根据深度来查看两张表的数据,后面的C1和C2分别代表当前深度的数据

例如DEPT为3100时:C1为哈哈,C2没有值
例如DEPT为3300时:C1为嘿嘿,C2为吼吼

我想要达到的结果
DEPTHC1C2
3100哈哈
3200咯咯
3300嘿嘿吼吼

SELECT
    s.DEPTH,
    A.C1,
    B.C2 
FROM
    ( SELECT DEPTH FROM A UNION ALL SELECT DEPTH FROM B ) s
    LEFT JOIN A ON A.DEPTH = s.DEPTH
    LEFT JOIN B ON B.DEPTH = s.DEPTH 
GROUP BY
    s.DEPTH
SELECT a.depth,a.c1,b.c2 FROM a LEFT JOIN b ON a.depth=b.depth

UNION 

SELECT b.depth,a.c1,b.c2 FROM a RIGHT JOIN b ON a.depth=b.depth

SELECT
    COALESCE(t1.depth, t2.depth)    AS depth
   ,t1.c1
   ,t2.c2
FROM
(
    SELECT
        depth
       ,c1
    FROM 表A
) t1
FULL OUTER JOIN
(
    SELECT
        depth
       ,c2
    FROM 表B
) t2
ON t1.depth = t2.depth
;

img

一个A为主表的左连接,一个B为主表的左连接,再Union起来

其实就是:A的独有+B的独有+AB的公有

SELECT e.depth,e.c1,d.c2 from a e LEFT JOIN b d ON e.depth=d.depth
UNION
SELECT d.depth,e.c1,d.c2 FROM a e RIGHT JOIN b d ON e.depth=d.depth
order by depth