如何为“where in”编写 sql 语句?针对复合键的子句?

发布于 2024-10-15 05:16:28 字数 308 浏览 6 评论 0原文

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

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

otherTable 有复合主键时,我该如何执行此操作?

复合键有两列:(

docnum float
version int

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

Using MSSQL 2005 I am used to writing a statement like this:

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

How can I do this when otherTable has a composite primary key?

The composite key has two columns:

docnum float
version int

(My google-fu suggests using CTEs to do this however I have no experience with them.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦冥 2024-10-22 05:16:28

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

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

更新也有类似的语法。

In MS SQL you can do this:

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

There's a similar syntax for updates too.

我是男神闪亮亮 2024-10-22 05:16:28

您还可以使用 exists 关键字:

delete t1
from myTable t1
where exists (
    select * from otherTable where docnum = t1.docnum and version = t1.version
)

You can also use the exists keyword:

delete t1
from myTable t1
where exists (
    select * from otherTable where docnum = t1.docnum and version = t1.version
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文