Mysql如何更新字段值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql如何更新字段值相关的知识,希望对你有一定的参考价值。

使用updata可以更新,但是现在有个问题。
之前的字段例如是“123”,现在变成“1234”,使用updata是将之前的123删除,把1234覆盖进去,如何做到这个“4”是增加进去的,这样的话如果之前的字段有10M,每次改一下,就会快多了。

格式:update 表名称 set 字段名称 = 字段名称 + 1 [ where语句]
比如说数据库中有一张student表,要想把id为1的学生成绩(score)加1则
update student set score=score+1 where id = 1
如果你不加where系统就不会知道你具体要更新哪条记录,而导致所有该表中score都增加1,当然,除非这就是你的本意。
请采纳答案,支持我一下。追问

需要添加的数据是用户自己输入的,不是我可以定义的,我是想用一个表来保存用户实时输入的数据

参考技术A mysql如何更新字段值
格式:update 表名称 set 字段名称 = 字段名称 + 1 [ where语句]
比如说数据库中有一张student表,要想把id为1的学生成绩(score)加1则
update student set score=score+1 where id = 1
如果你不加where系统就不会知道你具体要更新哪条记录,而导致所有该表中score都增加1,当然,除非这就是你的本意。
参考技术B 使用update语句就可以呀,你说的是替换字符串吗

update 表名 set 字段名=replace(字段名,'123','1234') [ where语句]

将123替换为1234,追问

我的意思不是1234,这样简单的,能否让数据库知道前面是123,后面只用加一个4.
我的123,可能是代表很多很多内容,不管是用updata,还是replace都是操作量比较大的。

追答

那我就 呵呵了,mysql中没有你想的这样功能。你想的难道操作量就不大了?

追问

现在就是想找一个比较好的方法,目前我这里是10个人左右使用,如果人一多的话,就是很卡。实在不行的话,我只有存到客户端本地,然后定期上传服务器了。

根据mysql中其他表中的匹配值更新列

【中文标题】根据mysql中其他表中的匹配值更新列【英文标题】:Update column based on matching values in other table in mysql 【发布时间】:2012-09-20 23:05:40 【问题描述】:

我有两个表日历和客户表。日历表有一个“客户”列,其中客户表“ID”作为值。但不幸的是,这个日历客户字段值被错误地填充了其他值。两个表都有这些公共字段 Date、SeatingID 和 BusID。如何根据这些常用字段更新日历表客户字段?

下面是两个表的结构。

客户表

日历表

【问题讨论】:

【参考方案1】:

你可以UPDATE第二个表CalendarCustomer字段从第一个表Customer通过JOINing这两个表像这样:

UPDATE calendar c1
INNER JOIN Customer c2 ON c1.SeatingID = c2.SeatingID AND c1.BusID = c2.BusID
SET c1.Customer = c2.ID --or SET c1.Customer = c2.PassengerName or whatever you want.

SET子句中,你可以设置你想更新的列,你也可以JOIN这两个表基于任何谓词,我用c1.SeatingID = c2.SeatingID AND c1.BusID = c2.BusID,但是你可以选择适合你的需要。

Here is a SQL Fiddle demo

【讨论】:

我尝试使用所有连接但过滤的数据不正确。尽管有更多匹配的记录,但只更新较少的列数.. @Uma,过滤的数据怎么不正确?我的查询有什么问题?你能进一步解释一下吗?您必须定义条件连接propelry,如果您有多个匹配列,可能需要添加更多谓词。您能否设置一个演示来解释 SQL fiddle 中的问题,或者用这个不正确的结果编辑我的Demo query ON SQL Fiddle,以及您想从这个查询中得到什么正确的结果。谢谢 更新日历 ca left join customer c on c.DateofTravel=ca.Date and c.SeatingID=ca.SeatingID and c.BusID=ca.BusID set ca.Customer=c.ID;跨度> 【参考方案2】:

试试这个代码:

UPDATE calendar cal, customer cust 
SET cal.Customer = cust.ID
where cal.SeatingID = cust.SeatingID 
and cal.BusID = cust.BusID
and cal.DATE = cust.DateOfTravel;

SQL Fiddle演示

Here是指向update的更多信息的链接。

【讨论】:

【参考方案3】:
update calendar ca left join customer c 
on c.DateofTravel=ca.Date and c.SeatingID=ca.SeatingID and c.BusID=ca.BusID 
set 
ca.Customer=c.ID;

【讨论】:

【参考方案4】:

使用此查询将帮助您从另一个表列更新表列:

UPDATE tableName1 AS tb1
INNER JOIN tableName2 AS tb2 
ON (tb1.columnName= tb2.columnName) 
SET tb1.updatedColumn = tb2.updatedColumnValue
WHERE ADD HERE CONDITION IF REQUIRED

【讨论】:

以上是关于Mysql如何更新字段值的主要内容,如果未能解决你的问题,请参考以下文章

Mysql如果某个字段值存在则更新另一个字段的值为原值+100,命令应该如何写?

PHP如何取得mysql字段值并记算时间?

mysql如何根据一列值更新另一列的值?

如何更新Django 的ManyToMany 字段

mysql如何让时间属性不自动更新

如何批量删除mysql某个字段的某个值?