是否可以在同一条 SQL 语句中从多个表中删除?

2023-11-29

可以使用 join 语句来限定要删除的集合来进行删除,如下所示:

DELETE J
FROM Users U
inner join LinkingTable J on U.id = J.U_id
inner join Groups G on J.G_id = G.id

WHERE G.Name = 'Whatever'
and U.Name not in ('Exclude list')

不过,我有兴趣删除连接标准的两边——LinkingTable记录及其所依赖的用户记录。我无法打开级联,因为我的解决方案是实体框架代码优先,并且双向关系形成多个级联路径。

理想情况下,我想要这样的东西:

DELETE J, U
FROM Users U
inner join LinkingTable J on U.id = J.U_id
...

从语法上讲,这是行不通的,但我很好奇这样的事情是否可能?


不,您需要运行多个语句。

因为您需要从两个表中删除,所以请考虑创建一个匹配 ID 的临时表:

SELECT U.Id INTO #RecordsToDelete
FROM Users U
   JOIN LinkingTable J ON U.Id = J.U_Id
...

然后从每个表中删除:

DELETE FROM Users 
WHERE Id IN (SELECT Id FROM #RecordsToDelete)

DELETE FROM LinkingTable
WHERE Id IN (SELECT Id FROM #RecordsToDelete)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在同一条 SQL 语句中从多个表中删除? 的相关文章

随机推荐

  • 我对drawable-hdpi 和drawable-mdpi 感到困惑

    我正在尝试让我的 Android 应用程序在手机类型设备和平板电脑上运行 对于布局 我有layout normal和layout large 并且我将xml文件放入每个布局中 似乎为每个设备选择了正确的布局 手机的layout normal
  • 芹菜组和链

    我需要对 Celery 中的一些任务进行排序 其中一些应该作为单个任务 一些应该并行工作 当组中的任务完成时 它应该传递下一个任务 chain task1 s task2 s group task3 s task4 s group task
  • 在C中反转单​​链表[重复]

    这个问题在这里已经有答案了 可能的重复 如何仅使用两个指针反转单链表 这是反转链表的 C 代码 但这并没有产生所需的输出 struct node temp prev while head gt next NULL temp prev hea
  • 混合模式 C++/CLI 应用程序未正确关闭 CLR

    我的混合模式 MFC 应用程序正在创建错误的内存泄漏 因为 CRT 没有时间在 MFC dll 关闭之前关闭 我有一个非常简单的小应用程序来显示问题 include
  • 具有本地化内容的 ASP.NET 密码恢复控件

    我正在使用 ASP NET 成员资格和登录控件开发一个简单的门户应用程序 我想使用 PasswordRecovery 控件发送包含忘记密码的电子邮件 但我的门户需要本地化 我有一个现有的内容管理系统 我正在从中提取本地化字符串 并且我想将
  • MySQL:ORDER BY RAND() 的替代方法

    我读过一些 MySQL 的替代品ORDER BY RAND 函数 但大多数替代方案仅适用于需要单个随机结果的情况 有谁知道如何优化返回多个随机结果的查询 例如 SELECT u id p photo FROM users u profile
  • Android 连接 2 个音频(wav 或 mp3)文件

    我必须连接 2 个或更多音频 wav 或 mp3 文件并获取一个音频文件 我怎样才能在安卓中做到这一点 提前致谢 下面的代码部分将按照已进行的选择数量进行工作 选择意味着选择了多少个文件 将两个 wav 文件放入 sdcard0 SSoft
  • 将 list_selector_background 用作 LayerList 可绘制的 ListView 项目

    如果我们使用 ListView 或 ExpandableListView 默认背景是 android drawable list selector background 我有一个 ExpandableListView 它显示按日期分组的数据
  • 在线程之间锁定图像时出现问题

    我需要在两个不同的线程中获取锁 以便访问 EmguCv 中的位图 从网络摄像头填充 我有一个 GetFrame 函数 可以查询相机并将其返回的内容放入 NET 位图中 我有两个线程需要访问此位图 一个需要写入位图并将位图分配给图片框 另一个
  • 在另一个表中引用 MySQL ENUM

    我创建了一个 SkillLevel 表 CREATE TABLE sklllevel Name varchar 20 NOT NULL level enum No Experience Beginner Expert Advisor DEF
  • SQL 排名功能是否应被视为“谨慎使用”

    这个问题源于关于是否在数据库中使用SQL排名功能的讨论 特殊案例 任何常见的 RDBMS 都包含一些排名功能 即其查询语言具有以下元素 TOP n ORDER BY key ROW NUMBER OVER ORDER BY key or O
  • 在 Git 中,如何查看和管理不在分支中的提交?

    提交不一定在分支中 那么如何查看和管理这些提交呢 另外 是否可以从 gitk 查看这些提交 多谢 PS 为了让事情更清楚 这里有一个例子 git init git commit touch toto git add toto git com
  • Google Dataflow 挂起且没有日志

    当我跑步时WordCount 作业示例从带有 DataflowPipelineRunner 的 Dataflow 文档来看 它启动了工作线程 然后以 正在运行 状态挂起 最后两条状态消息 Jan 29 2016 22 05 50 S02 b
  • 在ggplot中将某一类别的颜色设为灰色?

    试图将这一组设置为 未知 灰色 并在图例中使用灰色键 data lt fread data path bgrd lt data data pop Unknown ref lt data data pop Unknown p lt ggplo
  • 在 JSON 中搜索对象

    widget debug on window title Sample Konfabulator Widget name main window width 500 height 500 image src Images Sun png n
  • 使用 CFLocation - CF9 重定向到新选项卡

    有没有办法使用 CFLocation 将用户重定向到新窗口 据我所知你不能使用target blank在 CFLocation 中 还有其他方法吗 这是我的代码
  • 如何在矩阵的每一行上向量化此操作

    我有一个矩阵充满TRUE FALSE值 我试图找到第一个的索引位置TRUE每行的值 或返回NA如果没有TRUE行中的值 以下代码完成了工作 但它使用了apply call 我相信这只是 for 循环的包装 我正在处理一些大型数据集 但性能受
  • 使用另一个表中的数据连接并覆盖一个表中的数据

    如何加入和覆盖数据似乎是一个常见的请求 但我尚未找到适用于整个数据集的优雅解决方案 注意 为了简化数据 我将仅使用 1 和 NA 来表示值和一小部分列 但实际上我有数百个具有不同值的列 我有一个数据表 d1 在某些列和行中具有 NA 值 l
  • tomcat 7中获取空指针异常@Resource注释

    这是 context xml 中我的资源元素
  • 是否可以在同一条 SQL 语句中从多个表中删除?

    可以使用 join 语句来限定要删除的集合来进行删除 如下所示 DELETE J FROM Users U inner join LinkingTable J on U id J U id inner join Groups G on J