MySQL 批量修改某一列的值为另外一个字段的值
2023-09-14 08:56:53 时间
mysql> select * from fruit; +----+--------+-------+ | id | name | price | +----+--------+-------+ | 1 | apple | 0 | | 2 | banana | 0 | | 3 | orange | 0 | | 4 | mango | 0 | | 5 | pomelo | 0 | +----+--------+-------+ 5 rows in set (0.00 sec)
要求很简单,将上面fruit表的price列的值改为id列的值,比如第一条记录的price改成1(对应id)。
刚开始,我很天真的这样想:
1、用php或者其他的将所有记录都取出来
2、然后每一条记录,单独修改一次
这样就存在一个问题,效率并不高,首先,发请求、等待数据库执行,然后在迭代下一条记录。
然后换了一种方法,就是下面这个语句:
mysql> update fruit a set price = (select id from fruit b where a.id = b.id);
其实SQL语句写的特别明白,意思也没问题,但是,mysql不支持更改一种表,这种表就是在from子句中的表。
所以,上面报错信息如下:
ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause
公布答案:
直接更新price=id
mysql> update fruit set price=id; Query OK, 5 rows affected (0.00 sec) Rows matched: 5 Changed: 5 Warnings: 0 mysql> select * from fruit; +----+--------+-------+ | id | name | price | +----+--------+-------+ | 1 | apple | 1 | | 2 | banana | 2 | | 3 | orange | 3 | | 4 | mango | 4 | | 5 | pomelo | 5 | +----+--------+-------+ 5 rows in set (0.00 sec)
首先,我们在平常的update、insert、where筛选中,如果值的类型是字符串型,那么我们通常会使用引号将其括起来,但是我们并没有将字段名括起来。
在上面这一条命令中,set price=id,其实id也是字段名,并不是id的值。更新的时候,会自动取出其中的值来进行更新。
相关文章
- 【MySQL高级】MySql中常用工具及Mysql 日志
- MySQL 增量恢复:实现安全数据还原(mysql增量恢复)
- 【MySQL 中的悲观锁:深入解读】(悲观锁mysql)
- MySQL建表查询:获得强大结构(mysql查询建表语句)
- MySQL最大并发量:一个窥视(mysql并发量是多少)
- MySQL内存锁:优化提升数据库性能(mysql内存锁)
- MySQL表空间:如何新建一个(mysql表空间新建)
- 开启MySQL服务:一个简单命令(启动mysql服务命令)
- 解决MySQL数据导入速度慢问题(mysql导入数据慢)
- 操作MySQL Jar包操作指南(mysql的jar包)
- 搜索MySQL 使用LIKE进行强大的搜索(mysql的like)
- MySQL大小写不敏感:一个简单的指南(mysql大小写不敏感)
- MySQL:排除不断重启的困扰(mysql不断重启)
- MySQL汉字会解决什么?(mysql汉字问号)
- 创建MySQL用户:创建表的简易指南(mysql用户下的表)
- MySQL中 的遍历查询:一个简洁而又强大的方式(mysql遍历查询结果)
- MySQL批量导入文件教程(mysql 批处理导入)
- MySQL表格的应用使用指定表格提高数据操作效率(mysql中使用某个表格)
- Cocoa如何调用MySQL便捷操作数据库(cocoa调用mysql)
- C语言与MySQL线程构建一个可靠的系统(c mysql线程)
- MySQL中使用IF语句实现多条件判断(mysql中if多条件)
- MySQL中Float数据类型详解(mysql中float)
- 从BI到MySQL 链接一个改变着你的世界(bi怎么链接mysql)
- MySQL反向查询轻松实现数据库倒序检索(mysql中反向查询)
- MySQL创建表示例快速掌握MYSQL基础操作(mysql中创建表的例子)
- 如何在MySQL中创建一个新的数据库(mysql中创建一个)
- 如何找到可靠的MySQL下载渠道(mysql下载那个一个)
- 如何设置MySQL使其不自动小写(mysql 不自动小写)
- MySQL避免重复字段数据冲突(mysql 不能重复字段)
- MySQL不支持窗口函数,影响数据查询分析效率(mysql不支持窗口函数)