热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLite将列相乘以更新第三列-SQLitemultiplycolumnstoupdateathirdcolumn

IamtryingtodowhatIthinkshouldbeasimpleSQLiteoperation.Iwanttomultiplytwocolumnsf

I am trying to do what I think should be a simple SQLite operation. I want to multiply two columns from separate tables and put the results in a new column in the first table. The following runs, but produces a column of all 0.0:

我正在尝试做我认为应该是一个简单的SQLite操作。我想将两个列从不同的表中相乘,并将结果放在第一个表的新列中。下面运行,但生成所有0.0的列:

UPDATE table 1
SET columnC = (SELECT (table1.columnB * table2.columnX)
               FROM table 1
               INNER JOIN table2 ON table1.columnA = table2.columnA);

If I isolate the SELECT statement in parentheses and run it on its own, I get the right values, but I don't know how to insert these into a column in the table.

如果我将SELECT语句隔离在圆括号中,并自己运行它,就会得到正确的值,但我不知道如何将这些值插入到表中的列中。

SELECT (table1.columnB * table2.columnX)
       FROM table 1
       INNER JOIN table2 ON table1.columnA = table2.columnA;

Any insight?

了解吗?

1 个解决方案

#1


2  

I think your issue might be that you aren't restricting the update so it is applying it to the every row for every row so at the end of it columnC would be the same value throughout.

我认为您的问题可能是您没有限制更新,所以它将它应用到每一行的每一行,所以在它的末尾,columnC将是相同的值。

e.g. Assuming :-

例如假设:

DROP TABLE IF EXISTS table2;
CREATE TABLE IF NOT EXISTS table2 (columnA INTEGER,columnX INTEGER);
INSERT INTO table1 VALUES(1,5,0),(2,7,0),(3,8,0),(4,3,0);
INSERT INTO table2 VALUES(1,4),(2,3),(3,10),(4,21);

SELECT * FROM table1 JOIN table2 ON table1.columnA = table2.columnA;

The result (tables unchanged, so the base data, both tables joined highlighted is table 2 columns) :- enter image description here

结果(表不变,所以基本数据,两个表连接的表都是表2列):-。

Example 1 - How you are doing it

Using (your way i.e. WHERE's commented out) :-

使用(你的方式,即哪里被注释掉):-

UPDATE TABLE1 SET columnC = 
    (SELECT (table1.columnB * table2.columnX)
           FROM table1
           INNER JOIN table2 ON table1.columnA = table2.columnA
           --WHERE table1.columnA = 3
    )
--WHERE columnA = 3
;

SELECT * FROM table1 JOIN table2 ON table1.columnA = table2.columnA

The result is (all ColumnC's changed to 20 i.e. 4 * 5 as per Table1.ColumnA * Table2.ColumnX for where ColumnA's are 1) :-

结果是(根据表1,所有列都变为20,即4 * 5。一列圆柱*表二。1) -

enter image description here

Example 2 - restricting to 1 row using WHERE

Adding the WHERE's then the result is :-

加上WHERE,结果是:-

enter image description here

Example 3 - Updating all rows

Now if you wanted to update all rows then you could use WITH ... UPDATE e.g.

如果你想要更新所有的行,你可以用…更新如。

WITH updates(ID, newvalue) AS (
    SELECT table1.columnA,
        table1.columnB * table2.columnX 
    FROM table1 
    INNER JOIN table2 ON table1.columnA = table2.columnA
)
UPDATE TABLE1 SET columnC = 
    (
    SELECT newvalue
    FROM updates
    WHERE table1.columnA = ID
    )
;

Which would result in :-

这将导致:- ?

enter image description here


推荐阅读
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • WhenImtryingtorunthefollowing:当我试图运行以下内容时:ContentValuescvnewContentValues();cv ... [详细]
  • 我正在一个涉及SQLite的项目中,我只有一个数据库文件,现在我正在测试我的应 ... [详细]
  • 有没有人用过sqlite?关于tablehasnocolumnnamedcolumn插入数据的时候报上边的错。问题是我明明有这一列。直接在sqlitedevoloper里执 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
风铃草549天王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有