3

使用 MSSQL 2005 我习惯于编写这样的语句:

delete
from myTable
where ID in (select ID from otherTable where deleted = 1)

otherTable当有复合主键时,我该怎么做?

复合键有两列:

docnum float
version int

(我的 google-fu 建议使用 CTE 来执行此操作,但我没有使用它们的经验。)

4

2 回答 2

2

在 MS SQL 中,您可以这样做:

DELETE T
FROM myTable T
INNER JOIN otherTable OT
  ON T.docnum = OT.docnum
  And T.version = OT.version

更新也有类似的语法。

于 2011-01-27T22:54:53.357 回答
1

您还可以使用exists关键字:

delete t1
from myTable t1
where exists (
    select * from otherTable where docnum = t1.docnum and version = t1.version
)
于 2011-01-29T07:09:40.233 回答