首页 > 请教一个SQL

请教一个SQL

表A的数据:

|column A|
 1
 2
 3

表B的数据:

|column A| |column B|
 1          1001
 2          1001
 3          1002

表C的数据:

|column A|
 1001
 1002
 1003

希望根据表A, C找到表B中没有匹配到的数据并插入表D,表D的结果应该为:

|column A| |column B|
 1          1002
 1          1003
 2          1002
 2          1003
 3          1001
 3          1002
 3          1003

前两行表示从B中得知1匹配到了1001,根据表C说明1002和1003没有匹配到,于是加入到表D

求教这个SQL怎么写


语句是可以写出来,但是作为开发者不建议你这样,最好还是把逻辑一步一步写,
写代码要傻瓜化,让后来人读起来没那么吃力。


insert into D 
    select 
        * 
    from (
        select 
            a.columnA as columnA,
            c.columnA as columnB 
        from 
            C as c,
            A as a
    ) as e 
    left join 
        B 
    using 
        (columnA, columnB) 
    where 
        B.columnA is null;
【热门文章】
【热门文章】