高级 SQLite 更新表查询

2024-04-28

我正在尝试更新数据库的表 B,如下所示:

Table A:
id, amount, date, b_id
1,200,6/31/2012,1
2,300,6/31/2012,1
3,400,6/29/2012,2
4,200,6/31/2012,1
5,200,6/31/2012,2
6,200,6/31/2012,1
7,200,6/31/2012,2
8,200,6/31/2012,2

Table B:
id, b_amount, b_date
1,0,0
2,0,0
3,0,0

现在,通过此查询,我可以在一次选择中获取所需的所有数据:

SELECT A.*,B.* FROM A LEFT JOIN B ON B.id=A.b_id WHERE A.b_id>0 GROUP BY B.id

id, amount, date, b_id, id, b_amount, b_date
1,200,6/31/2012,1,1,0,0
3,400,6/29/2012,1,1,0,0

现在,我只想将所选列 amount 复制到 b_amount,将 date 复制到 b_date

b_amount=amount, b_date=date

导致

id, amount, date, b_id, id, b_amount, b_date
1,200,6/31/2012,1,1,200,6/31/2012
3,400,6/29/2012,1,1,400,6/29/2012

我尝试过 COALESCE() 但没有成功。 有经验的人有解决这个问题的方法吗?

解决方案:

感谢下面的答案,我设法想出了这个。这可能不是最有效的方法,但对于一次性更新来说是可以的。这将为您插入每组的第一个相应条目。

REPLACE INTO A SELECT id, amount, date FROM 
(SELECT  A.id, A.amount, B.id as Bid FROM A INNER JOIN B ON (B.id=A.B_id)
ORDER BY A.id DESC) 
GROUP BY Bid;

所以您正在寻找的似乎是 UPDATE 查询中的 JOIN 。在 mySQL 中你会使用

UPDATE B INNER JOIN A ON B.id=A.b_id SET B.amount=A.amount, B.date=A.date;

但这不被 sqlite 支持,因为this https://stackoverflow.com/questions/773441/how-do-i-make-an-update-while-joining-tables-on-sqlite可能相关的问题指出。但是,有一个使用 REPLACE 的解决方法:

REPLACE INTO B 
SELECT B.id, A.amount, A.date FROM A 
LEFT JOIN B ON B.id=A.b_id 
WHERE A.b_id>0 GROUP BY B.id;

该查询将简单地为应保持其状态的所有列填充表 B 的值,并为复制的值填充表 A 的值。确保 SELECT 语句中的列顺序符合表 B 的列顺序,并且提及所有列,否则您将丢失这些字段的数据。这对于表 B 的未来更改可能是危险的。因此,请记住在更改表 B 时更改此查询的列顺序/存在。

有点偏离主题,因为你没有要求这样做:A.b_id显然是 B.id 的外键。看来您正在使用该值0外键表示 B 中没有相应的条目。(从您的 SELECT 中推断出WHERE A.b_id>0.) 您应该考虑使用null的价值。当您使用时INNER JOIN然后代替LEFT JOIN您可以完全删除 WHERE 子句。星展银行随后将整理所有不满意的关系。

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

高级 SQLite 更新表查询 的相关文章

  • 如何在Python 2.7中访问ODB文件

    我想在 Python 中访问 ODB 文件 使用 LibreOffice Base 创建 并提取一个表以供进一步使用 ODB包含多个表 一种关系设计和多种表单 是否可以在不使用任何 SQL 的情况下实现这一目标 Edit 由于我自己解析这种
  • 使用本地 SQlite 数据库填充可扩展列表视图的方法

    我的应用程序中有一个 sqlite 数据库 我想用它制作一个可扩展的列表视图 我已经确定了我应该采取的方法 尝试了很多方法来找到相同的教程 但找不到一个使用本地数据库填充可扩展列表的教程 Android 网站上有一个教程 他们使用手机中的联
  • 如何从 TKinter 和 SQLite3 中的列表框中删除行

    我试图弄清楚如何从列表框和 sqlite3 中删除一行 我的底部有一个 delButton 函数 我需要从列表框和sql中删除该行吗 我不确定我在这里做什么 就删除部分而言 我通过复制和粘贴各种示例将该功能放在一起 from Tkinter
  • SQLITE 文件已加密或不是数据库

    我有一个大问题 我正在使用 SQLite 开发一个桌面应用程序 但在复制 粘贴过程中我断电并且该过程终止 因此数据库丢失 但是 我找到了恢复它的方法 但是数据库是加密的 当我尝试使用打开连接时conn Open 我收到错误 SQLITE 已
  • SQLite 参数 - 不允许表名作为参数

    我正在通过 Flex 在 AIR 中开发一个应用程序 但我没有发现 SQLite 出了什么问题 我习惯了 MySQL 参数有效 但仅在某些情况下有效 这是内置的针对sql注入的卫生系统的一部分吗 谢谢你的帮助 Works sqlite IN
  • 如何使用 SQLalchemy 连接三个表并将所有列保留在其中一个表中?

    所以 我有三张表 类定义 engine create engine sqlite test db echo False SQLSession sessionmaker bind engine Base declarative base cl
  • 数据库无法检索图像或为空,导致数组错误。如何修复它?

    我的问题是java lang IndexOutOfBoundsException 无效索引 0 大小为 0 我不知道如何修复此错误 并且我的阵列上没有发现任何问题 我是安卓新手 希望大家理解 也许这是我的错误的原因value put KEY
  • 带有复合主键的 Room @Relation

    我的问题是这个问题的延伸 也是我的 gt 房间复合主键链接到外键 https stackoverflow com questions 50248668 room composite primary key link to foreign k
  • SQLite3内存数据库到磁盘的纯Python备份

    在不安装额外模块的情况下 我如何使用SQLite备份API https sqlite org c3ref backup finish html将内存数据库备份到磁盘数据库 我已成功执行磁盘到磁盘备份 但将已存在的内存中连接传递给sqlite
  • 在iOS中启动应用程序时如何复制sqlite数据库?

    每次启动应用程序时 我想将带有最新更新的 sqlite 数据库从数据库位置复制到我的 iOS 应用程序 有什么办法可以做到吗 您可以将以下方法添加到您的应用程序委托中 void copyDatabaseIfNeeded Using NSFi
  • 如何创建或稳定 FMDB 中两个表之间的关系?

    我是 iOS 开发新手 也是 SQLITE 数据库新手 我在我的项目中使用 FMDB 作为包装器 我有两个表 1 ParticepentsTable and 2 ExerciseTable ParticepentsTable包含 4 行 例
  • 如何在html5中使用现有的sqlite数据库

    我已经使用 sqlite 浏览器创建了一个 sqlite 数据库文件 我有一个文件 sample sqlite 现在我想知道如何在 javascript 中导入此文件并使用 sqlite 文件中的数据 我一直在使用下面提到的脚本 var d
  • 如何将数据从 SQLITE 数据库获取到 Android 中的数组?

    很确定这是一个简单的问题 但我对所有将从游标返回的数据适应不同视图的示例感到困惑 我只想运行原始查询并将返回的每一项数据放入浮点数组中 以便我稍后可以将它们添加起来 我需要为此使用什么 Thanks 当您查询数据库时 您仍然会有一个游标 但
  • sqlite 3“SQL 错误‘内存不足’(7)”objc

    嗨 有人可以指出我做错了什么吗 错误是这样的 SQL error out of memory 7 NSArray RecipeInfo NSMutableArray retval NSMutableArray alloc init NSSt
  • 将 SQLite 的 FTS3/4 与 Python 3 结合使用

    我一直在使用 python 的 Flask 框架开发 peewee 的示例博客应用程序 看https github com coleifer peewee https github com coleifer peewee 内部示例 gt 博
  • 在 Android 中使用 SQL (JDBC) 数据库

    在旧的 Java 应用程序中 我使用以下代码连接到 SQL 数据库并将其用于某些查询 private Connection dbConnection null System setProperty derby system home C C
  • android sqlite 如果不存在则创建表

    创建新表时遇到一点问题 当我使用 CREATE TABLE 命令时 我的新表按应有的方式形成 但是当我退出活动时 应用程序崩溃 并且我在 logcat 中得到一个表已存在 如果我使用 CREATE TABLE IF NOT EXISTS 则
  • SQlite删除内连接

    我已经阅读了很多其他答案 但无法使其正常工作 select from invTypes inner join invGroups on invtypes groupID invgroups groupID where invGroups c
  • 使用 SQLite 创建列表树

    我正在尝试使用 PHP 和 SQLite 表设置创建一个分层列表 如下所示 itemid parentid name 1 null Item1 2 null Item2 3 1 Item3 4 1 Item4 5 2 Item5
  • 当添加列较少时追加到现有 SQLite 表,而不将数据库读入 R

    是否有一些简单的方法 无论是在 SQL 端还是在 R 端 将 data frame 附加到具有更多列的现有表 缺失的列应该用 NA 填充 如果它能够优雅地处理比表 1 列数更多的表 2 那么会加分吗 library RSQLite Crea

随机推荐

  • 为什么指向 int 的指针会转换为 void* 而指向函数的指针会转换为 bool?

    C 标准草案 N3337 对指针转换有以下规定 4 10 指针转换 2 指向的指针 类型的右值cv T 在哪里T是一个对象类型 可以转换为 指向的指针 类型的右值cv void 将 指针转换为cv T 到 指向cv void 指向类型对象的
  • NSArray 的大小

    如何获得 a 的大小NSArray并使用在控制台中打印它NSLog int size array count NSLog there are d objects in the array size
  • 与 F# List.nth 的参数顺序混淆

    List nth is T 列表 gt 整数 gt T 而不是标准int gt T 列表 gt T like Seq nth 这使得管道有些尴尬 难道幕后有什么事情吗 我不知道为什么 可能是为了ocaml兼容性 http www csc v
  • 使用 getPathMatcher 的全局模式

    从 OCP 考试的 Kathy Sierra Bert Bates 书中我找到了以下代码 public class FileTest public static void matches Path path String glob Path
  • 在响应式网格上设置多个“相同高度”行部分的 CSS 唯一解决方案

    Wanted 仅 CSS 的解决方案 可在每行基础上启用多个等高网格 部分 并且也是响应式的 注意 这是一个后续问题这个问题 https stackoverflow com questions 44115503 css only solut
  • 如何在Nuxt Js中使用Google Map API?

    下面是我在 Nuxt Js 中获取 API 的代码 我已经编写了用于调用 API 的代码 但没有得到结果 我也没有得到任何与此相关的资源 async created const config headers Accept applicati
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 可以将矩形设置为显示边框吗?

    以下应用 public class Temp extends Application Override public void start Stage primaryStage StackPane root new StackPane Re
  • 挂载卷时无法运行 mariadb

    使用以下 docker compose yml 文件 version 2 services wordpress image wordpress ports 8080 80 environment WORDPRESS DB NAME my d
  • 数据与线的日期和时间转换

    我使用 D3 V5 创建了此图表 另外 我已在小提琴上附加了示例数据 您可以点击此处查看 https plnkr co edit pINxcS9yt9AuJmSk02Fs p preview 我已经包括了tick函数代码块 它在向左滑动的路
  • 在 iPhone 6 和 6 plus 中设置背景图像和图标图像

    如何区分 iPhone 5 和 iPhone 6 和 6 Plus 不同分辨率下的背景图像和图标图像 您必须在图像目录中启用 iOS 8 尺寸 它们在现有项目中默认关闭
  • 按公司名称过滤用户

    我试图让 Azure Active Directory 中的所有用户按以下条件过滤companyName过滤 我使用的电话是 v1 0 users select id mail displayName department filter c
  • R - 小鼠 - 添加一列,对具有估算值的列进行求和

    我有一个缺少数据的数据库 我需要估算数据 我使用的是小鼠 然后根据原始列创建新列 使用估算数据 我需要用这些新列进行统计分析 具体来说 我的参与者使用 7 点李克特量表填写了几份调查问卷 有些人没有回答所有问题 然后我需要估算值 1 对列中
  • 如何获取eclipse中的工作空间路径? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在研究PDE Eclipse Plugin Project 我需要获取工作区路径 我的文本小部件 swt 应该设置为当前工作空间路径 如
  • 在可序列化 Java 类中使用记录器的正确方法是什么?

    我有以下 doctored 我正在开发的系统中的类以及Findbugs http findbugs sourceforge net 正在生成一个SE BAD FIELD http findbugs sourceforge net bugDe
  • 单击表格行后如何刷新部分视图

    我有与模型链接的表格 foreach var item in Model tr td Html DisplayFor x gt item Field1 td td Html DisplayFor x gt item Field2 td tr
  • 初始化组件不存在

    InitializeComponent 此代码行出现在我的所有 Xaml 页面的构造函数中的代码隐藏中 它抛出以下错误 初始化组件不存在 现在我无法调试项目中的任何页面 尽管我已经注释掉了这一行 我怎样才能解决这个问题 任何帮助将不胜感激
  • Android 布局 xml 文件中 TextView 的首字母大写

    我在布局 xml 文件中有一个 TextView 如下所示
  • JDBC多线程插入可以吗?

    我目前正在开发一个 Java 项目 我需要准备一个大的 对我来说 mysql 数据库 我必须使用 Jsoup 进行网页抓取并将结果存储到我的数据库中 据我估计 我将大约插入 1 500 000 到 2 000 000 条记录 在我的第一次试
  • 高级 SQLite 更新表查询

    我正在尝试更新数据库的表 B 如下所示 Table A id amount date b id 1 200 6 31 2012 1 2 300 6 31 2012 1 3 400 6 29 2012 2 4 200 6 31 2012 1