使用 MSSQL 2005 我习惯于编写这样的语句:
delete
from myTable
where ID in (select ID from otherTable where deleted = 1)
otherTable
当有复合主键时,我该怎么做?
复合键有两列:
docnum float
version int
(我的 google-fu 建议使用 CTE 来执行此操作,但我没有使用它们的经验。)
使用 MSSQL 2005 我习惯于编写这样的语句:
delete
from myTable
where ID in (select ID from otherTable where deleted = 1)
otherTable
当有复合主键时,我该怎么做?
复合键有两列:
docnum float
version int
(我的 google-fu 建议使用 CTE 来执行此操作,但我没有使用它们的经验。)
在 MS SQL 中,您可以这样做:
DELETE T
FROM myTable T
INNER JOIN otherTable OT
ON T.docnum = OT.docnum
And T.version = OT.version
更新也有类似的语法。
您还可以使用exists关键字:
delete t1
from myTable t1
where exists (
select * from otherTable where docnum = t1.docnum and version = t1.version
)