我有两张桌子computers
和softwareinstalls
。
计算机主键是计算机is,软件安装有三个字段(安装is、计算机is和上次修改日期)。
软件安装使用computers.computerid加入的计算机installs。
我正在尝试删除某台计算机上安装的所有上次修改日期早于该计算机最大修改日期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中的查询是什么?
发布于 2013-01-17 10:38:23
您可以在delete语句上联接。对此使用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
为了获得更好的性能,请在列computerID
和lastmodifieddate
上添加索引。
https://stackoverflow.com/questions/14371315
复制相似问题