【问题标题】:Converting sub query转换子查询
【发布时间】:2021-04-06 23:58:09
【问题描述】:

如何将此子查询转换为加入查询或更简单的方式?

SELECT *
FROM ViewBuy99
WHERE Id NOT IN (
        SELECT Id
        FROM Buy99
        )

INSERT INTO Buy99
SELECT *
FROM ViewBuy99
WHERE Id NOT IN (
        SELECT Id
        FROM Buy99
        )

【问题讨论】:

    标签: sql sql-server join inner-join sql-insert


    【解决方案1】:

    您可以使用JOIN 将其表达为:

    insert into Buy99
        select vb.*
        from ViewBuy99 vb left join
             Buy99 b
             on b.id = vb.id
        where b.id is null;
    

    不过,我会推荐NOT EXISTS

    insert into Buy99
        select vb.*
        from ViewBuy99 vb 
        where not exists (select 1 
                          from Buy99 b
                          where b.id = vb.id
                         );
    

    【讨论】:

    • 难道我们不都喜欢真正的ANTI-JOIN 语法吗:-(
    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多