mysql相同编码的两条数据,两值相加更新到第三个值

img

怎样将编码code相同的两条数据,字段new_warehouse_num 与 old_warehouse_num的值相加得到总和sum


UPDATE table_name t1
JOIN (
    SELECT code, SUM(new_warehouse_num + old_warehouse_num) AS total_sum
    FROM table_name
    GROUP BY code
) t2 ON t1.code = t2.code
SET t1.sum = t2.total_sum;

select code,sum(new_warehouse_num+old_warehouse_num) from table group by code ;

这样做很影响系统性能。建议如下:
你这个应该是为了记录每次出入库前后仓库余量,因此应该是有1张总表,记录每个code对应物资的余额数量;现在这个作为明细表;每次值等于出入库时,当前记录记录总表余额数量为前值,更新总表余额数量,当前记录记录总表余额数量为新值

引用chatGPT作答,要在MySQL表中更新具有相同code值的行的new_warehouse_num和old_warehouse_num字段的总和,您可以使用以下查询:

UPDATE table_name
SET sum = new_warehouse_num + old_warehouse_num
WHERE code = 'your_code_value';

这个查询假设您的表具有名为code,new_warehouse_num,old_warehouse_num和sum的列,并且您希望在code值匹配指定值的行中将sum字段更新为其他两个字段的总和。

如果您想为表中具有相同code值的所有行更新sum字段,则可以从查询中删除WHERE子句:

UPDATE table_name
SET sum = new_warehouse_num + old_warehouse_num;

这个查询将通过将new_warehouse_num和old_warehouse_num值相加来更新表中所有行的sum字段。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可以使用如下的SQL语句实现:

UPDATE table_name SET sum=new_warehouse_num+old_warehouse_num WHERE code='相同的编码值';

其中,table_name是你要更新的表名,code是你要更新的编码值,new_warehouse_num和old_warehouse_num是要相加的两个字段,sum是相加得到的总和。

如果需要在Python中执行此SQL语句,可以使用MySQLdb库,代码如下:

import MySQLdb

# 建立MySQL连接
conn = MySQLdb.connect(host="localhost", user="root", password="password", database="database_name")

# 创建游标对象
cursor = conn.cursor()

# 定义SQL语句
sql = "UPDATE table_name SET sum=new_warehouse_num+old_warehouse_num WHERE code='相同的编码值';"

# 执行SQL语句
cursor.execute(sql)

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

注意,在执行SQL语句后需要提交事务以保证更新操作的持久性。
如果我的回答解决了您的问题,请采纳!

要将编码为code的两条数据更新到第三个值,可以使用MySQL中的UPDATE语句来实现。具体的SQL语句如下: ``` UPDATE warehouse SET new_warehouse_num = (SELECT sum(new_warehouse_num) + old_warehouse_num FROM warehouse WHERE code = code) WHERE old_warehouse_num > 0; ``` 在这个语句中,我们首先使用UPDATE语句更新 warehouse 字段的新值,将新的值与old_warehouse_num进行比较,如果新的值比old_warehouse_num大,则更新新的值,并将 old_warehouse_num 的值设置为 0。 然后,我们使用SELECT语句从 warehouse 表中选择两个值,将它们相加并更新第三个值。这个新的第三个值将被作为新的 warehouse 字段的值进行更新。 最后,我们使用WHERE语句过滤掉old_warehouse_num为0的行。 因此,这个更新语句将更新编码为code的两条数据的第三个值。

为什么有两个一样的code?是需要,还是之前的错误导致的?

如果确实需要,那你需要一种更新机制保证两个code相同的项目有用一样的sum;如果是之前错误导致的,你是不是应该处理一下数据,然后去掉其中一行呢?