【问题标题】:delete statement that contains join删除包含 join 的语句
【发布时间】:2019-08-22 20:16:37
【问题描述】:

我在我的数据库中发现了一年前的重复记录。我正在尝试清理它们,我找到了我需要删除的所有 ID:

select id
from impWthrDta as a
right join (
    SELECT dte, rltn
    FROM impWthrDta 
    GROUP BY dte, rltn
    HAVING count(*) > 1
) as b
on a.dte = b.dte
and a.rltn = b.rltn
where id >= '0'
order by a.rltn, a.dte

为什么我不能简单地替换

select *

delete

【问题讨论】:

    标签: sql join sql-server-2012 duplicates sql-delete


    【解决方案1】:

    你可以。只需添加 DELETE 语句并将您的查询用作 ID 的过滤器:

    DELETE FROM WhateverTable
    WHERE ID IN 
    (select id
    from impWthrDta as a
    right join (
        SELECT dte, rltn
        FROM impWthrDta 
        GROUP BY dte, rltn
        HAVING count(*) > 1
    ) as b
    on a.dte = b.dte
    and a.rltn = b.rltn
    where id >= '0')
    

    【讨论】:

    • 我以为我尝试了 3 次,但再次尝试仍然有效。谢谢!
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2014-06-14
    相关资源
    最近更新 更多