SQL Server删除记录

时间:2013-01-17 02:35:37

标签: sql sql-server tsql sql-delete

我有两个表computerssoftwareinstalls

计算机主键是computerid,softwareinstalls有三个字段(installid,computerid和lastmodifieddate)。

软件安装与computers.computerid连接的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中的查询?

1 个答案:

答案 0 :(得分: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上添加索引。