【问题标题】:SQL Server delete recordsSQL Server 删除记录
【发布时间】:2013-01-17 02:35:37
【问题描述】:

我有两张桌子computerssoftwareinstalls

Computers 的主键是computerid,softwareinstalls 有三个字段(installid、computerid 和lastmodifieddate)。

软件安装computerid并加入computers.computerid。

我正在尝试删除计算机上最后修改日期早于该计算机最大值 1 天以上的所有软件安装,所以...

软件安装表

install  computerid  lastmodifieddate
1        1           01-16-13
2        1           01-16-13
3        1           01-14-13
4        2           01-12-13
5        2           01-10-13

将删除记录 3 和 5。sql server 中的查询是什么?

【问题讨论】:

  • 您运行的是什么版本的 Sql Server?如果您有 2005+,则查询会更容易,因为您可以使用 Partition。

标签: sql sql-server tsql sql-delete


【解决方案1】:

您可以加入删除语句。在此使用LEFT JOIN

DELETE  a
FROM    softwareinstalls a
        LEFT JOIN
        (
            SELECT computerID, max(lastmodifieddate) max_date
            FROM softwareinstalls
            GROUP BY computerID
        ) b ON a.computerID = b.computerID AND
                a.lastmodifieddate = b.max_date
WHERE   b.computerID IS NULL

为了获得更好的性能,请在 computerIDlastmodifieddate 列上添加索引。

【讨论】:

    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多