1

我有两张桌子computers,和softwareinstalls

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 中的查询是什么?

4

1 回答 1

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.

于 2013-01-17T02:38:22.653 回答