SQLite是否支持“删除自”

2023-12-12

这是 Microsoft SQL Server 的 T-SQL 上的有效语法,但在 SQLite 中无效,是否有在 SQLite 中执行相同操作的替代语法?

DELETE FROM something
FROM something
INNER JOIN combinations ON something.field1=combinations.field1
AND something.field2=combinations.field2
--optionally more criteria and/or more joins
WHERE combinations.field3=1234
--or anything really, just to show some criteria could be applied here also

在一般情况下,将整个联接移动到一个子查询中,该子查询查找要删除的行的主键:

DELETE FROM something
WHERE id IN (SELECT something.id
             FROM something
             JOIN combinations ON something.field1=combinations.field1
                              AND something.field2=combinations.field2
             WHERE combinations.something=1234)

如果您有复合主键,则可以使用rowid反而:

DELETE FROM something
WHERE rowid IN (SELECT something.rowid
                FROM something
                JOIN combinations ON something.field1=combinations.field1
                                 AND something.field2=combinations.field2
                WHERE combinations.something=1234)

如果您有复合主键并且将该表创建为没有ROID表,您必须将连接重写为相关子查询:

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

SQLite是否支持“删除自” 的相关文章

随机推荐

  • IBM Worklight - 连接/重新连接:WL.Client.connect 与 connectOnStartup 与 WL.Client.invokeProcedure

    在我们的项目中 我们试图弄清楚连接到服务器的最佳流程是什么 特别是在处理离线 在线场景等时 现在 对于我们来说 连接到 WL 服务器的所有三个选项似乎都是相似的 无论我们使用什么选项 我们都可以完美地调用我们的适配器过程 并且我们会收到在控
  • 使用 SendInput 发送两个或多个字符

    要发送字符 我们可以使用 SendInput 我如何使用它来发送多个字符 我尝试了这段代码 但它没有发送任何内容 INPUT in in type INPUT KEYBOARD in ki wScan 0 in ki time 0 in k
  • 如何结合代码优先和数据库优先方法

    假设我是一家公司的新开发人员 所以该项目已经有一个现有的数据库 为了处理这个项目 显然我需要搭建现有的数据库 数据库优先方法 它可以生成模型类供我处理 因此 我开始处理该项目 并希望向表中添加一个新列 因此我在模型类上添加一个新属性 然后我
  • 经典 ASP VBScript 中的 HMAC 算法 (SHA256)

    我正在尝试使用 SHA256 作为哈希在经典 ASP 中编写 HMAC 函数 我认为我做对了 但结果与列出的示例不同维基百科页面 我见过几个人们通过包含 WSC 在经典 ASP 中使用 HMAC SHA256 的示例 这不是我想做的 这是函
  • Python套接字同时接收多条消息

    我正在使用 python 3 套接字进行 TCP IP 聊天 并且在多个 socket send socket receive 对实例上遇到了同样的问题 举个例子 每次服务器更新已连接客户端的列表时 它首先发送一个字符串信号表明它将要执行此
  • NSString 保留计数 -1

    我想打印保留计数NSString in AppDelegate班级在didFinishLaunchingWithOptions method NSString str NSString alloc init NSLog str retain
  • C 中的运算符结合性特别是前缀和后缀递增和递减

    在 C 运算中 结合性是指递增 递减和赋值 2 postfix and 3 prefix and 16 Direct assignment 完整列表可以在这里找到C 中的维基百科运算符 我的问题是当我们有 int a b b 1 a b p
  • 无法构建 ASP.NET Core 2.0 + Angular 2/4 - 用户注册和登录应用程序

    我正在尝试在 IIS 服务器上部署 ASP NET Core 2 0 Angular 2 4 用户注册和登录应用程序 取自链接 https www pointblankdevelopment com au blog 134 aspnet c
  • 在 Java 中,对 Class.class 的引用有什么作用?

    我正在构建一个小型 Android 应用程序 但这更像是一个 Java 问题 而不是 Android 问题 浏览教程 有一些行看起来像 startService new Intent this MyService class MyServi
  • 如何获取接近另一种颜色的RGB值?

    如果我有 RGB 颜色 如何创建一个 javascript 函数 当另一个 RGB 值接近初始 RGB 时返回 true 否则返回 false 我已经使用过这个并且它对我来说非常有效 assuming that color1 and col
  • 如何在Python 3中通过FTP从内存上传数据?

    我想通过 FTP 将内存中的各种数据 数组内容 静态 html 代码等 上传到网络服务器 这仅适用于一个基本字符串 Hello World from ftplib import FTP import io bio io BytesIO b
  • 移动应用程序时会重置用户设置

    我注意到 如果您将该应用程序 exe 文件移动到另一个位置 用户设置将重置 据我了解 发生这种情况是因为应用程序数据文件夹中的位置也基于 exe 的路径 在生成哈希时会考虑到这一点 我知道有不同的替代方案 可以使用注册表或手动创建自定义配置
  • 将 null 放置在列表末尾

    我需要将空对象放置在末尾List 这是我为此目的所做的示例 public static void main String args List
  • 如何显示ProgressBar并使其进度?(Xamarin.Android)

    我调用一个 Web 服务 它获取 4 个文件 在加载这些文件时 我想向用户显示进度 圆形或水平都没关系 我已按照互联网上的示例进行操作 但屏幕上没有显示任何内容 MobileSellReference Service1 service ne
  • 有没有办法分析 Chromecast 崩溃?

    显然 崩溃后 端口 9222 上的开发者工具没有任何用处 因为 远程调试已因原因终止 websocket close 例如 我如何检索记录的时间线 或获取调用堆栈 或者找到有关 Chromecast 决定自行重启的原因的任何信息 调试 Ch
  • 在 JS 中移动元素

    我正在学习 javascript 并尝试做一个简单的练习 我有一个文本框并想用键盘控制它 我的 HTML 如下 目前 我只是尝试 1 个方向 const myBox document querySelector h1 document ad
  • D3 节点半径取决于链接数量:权重属性

    我正在尝试使用 D3 创建力定向图 就目前而言 节点的半径取决于核心价值JSON 中的对 d 尺寸 我知道d3 权重属性可用于计算链接数量并关联圆的半径属性 但我不知何故无法让它工作 请在这件事上给予我帮助 找到下面的代码 d3 json
  • “合并”替换 Keras/Tensorflow/Python3

    Merge 未在 Keras Tensorflow Python3 版本上运行 在以前的版本中 合并正在运行 但现在 它没有运行 所以我想我应该用替换 合并 来转换此代码 新的 Keras Tensorflow Python3 版本中缺少
  • 给定一个数组,找出每个元素的下一个较小元素

    给定一个数组 在不改变元素原始顺序的情况下 为每个元素找到数组中下一个较小的元素 例如 假设给定数组为 4 2 1 5 3 结果数组将为 2 1 1 3 1 我在一次采访中被问到这个问题 但我想不出比简单的 O n 2 解决方案更好的解决方
  • SQLite是否支持“删除自”

    这是 Microsoft SQL Server 的 T SQL 上的有效语法 但在 SQLite 中无效 是否有在 SQLite 中执行相同操作的替代语法 DELETE FROM something FROM something INNER