多表更新时碰到的 ERROR 1292 (22007)隐式转换错误
表结构如下:
Create Table: CREATE TABLE `test_t2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`customer_no` varchar(20) DEFAULT NULL,
`app_id` varchar(20) DEFAULT NULL,
`access_resource` varchar(20) DEFAULT NULL,
`status` varchar(10) DEFAULT NULL,
`ager` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8
语句如下:
UPDATE test_t2 t1 ,(
SELECT s.`customer_no`, s.`app_id`, s.`access_resource`, s.`status`, MAX(id) mxid
FROM test_t2 s
WHERE s.`status` = 0
GROUP BY s.`customer_no`, s.`app_id`, s.`access_resource`, s.`status`
HAVING COUNT(*) > 1
) t2
SET t1.`status` = 1
where t1.`customer_no` = t2.customer_no
AND t1.`app_id` = t2.app_id
AND t1.`access_resource` = t2.access_resource
AND t1.`status` = t2.status
and t1.`id` <> t2.mxid;
执行后,报错:
ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'a'
原来test_t2表的status字段是varchar(10)
当set t1.`status` = 1时,将‘a’转化为DOUBLE value处理,隐式转换失败,故报错。
解决方式:
修改测试表结构
update test_t2 set status='0' where status!='0';
alter table test_t2 modify status tinyint;
再次执行:
Query OK, 10 rows affected (0.29 sec)
Rows matched: 10 Changed: 10 Warnings: 0
再测试另外一种多表更新:
UPDATE test_t2 t1
INNER JOIN (
SELECT s.`customer_no`, s.`app_id`, s.`access_resource`, s.`status`, MAX(id) mxid
FROM test_t2 s
WHERE s.`status` = 0
GROUP BY s.`customer_no`, s.`app_id`, s.`access_resource`, s.`status`
HAVING COUNT(*) > 1
) t2 ON t1.`customer_no` = t2.customer_no
AND t1.`app_id` = t2.app_id
AND t1.`access_resource` = t2.access_resource
AND t1.`status` = t2.status
SET t1.`status` = 1
WHERE t1.`id` <> t2.mxid Query OK, 10 rows affected (0.00 sec)
Rows matched: 10 Changed: 10 Warnings: 0
这两句update语句都是实现了:将符合条件的记录的status置为1的功能
多表更新时碰到的 ERROR 1292 (22007)隐式转换错误的更多相关文章
- C# 中的隐式类型转换(运算时的隐式转换)和显示类型转换
区别: 隐式转换失败编译会报错. 显示转换有可能精度丢失. 根据项目的编译设置,显示转换溢出可能会报错,如果设置溢出且未使用checked检查,运行时如果发生溢出会产出未知的计算结果. 在数字运算时, ...
- ERROR 1292(22007)
ERROR 1292(22007) Table of Contents 1. 1292 1.1. 22007 1 1292 1.1 22007 错误信息 ERROR 1292 (22007): T ...
- 执行update语句mysql5.6报错ERROR 1292 (22007): Truncated incorrect DOUBLE value: '糖糖的坤大叔'
执行修改语句update tbl_user_details set nickname=CONCAT("用户",yunva_id) where nickname = yunva_id ...
- ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'asfsda1'
mysql> UPDATE financial_sales_order SET ASSIGN_TIME = '2018-05-02 00:00:00' where CUSTOMER_ID=354 ...
- mysql中两表更新时产生的奇葩问题,产生死锁!
如下一个两表更新语句 UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3 ...
- 有关使用phpstudy搭建sqli-lab环境搭建时发生Uncaught Error: Call to undefined function mysql_connect()错误
文章更新于2020-1-30 问题描述 Uncaught Error: Call to undefined function mysql_connect() 分析 经查php手册可知 mysql_co ...
- 启动Eclipse时An internal error occurred during: "Initializing Java Tooling".错误
解决方法一 重置窗口布局: windows > perspective > reset perspective 解决方法二: 如果上述方法不好使,采用下面的这种方法: 删除workspac ...
- SQL Server ->> 数据类型不一致比较时的隐式转换
当使用操作符进行比较的时候,两边数据类型不一致的情况下,数据类型优先级别低的会往优先级别高的发生隐式转换.下面的参考链接是优先级别列表. 参考: Data Type Precedence (Trans ...
- Oracle :多表更新多个字段
https://blog.csdn.net/funnyfu0101/article/details/52765235 总体原则:1)更新的时候一定要加where条件,否则必然引起该字段的所有记录更新 ...
随机推荐
- DOS下的安全空间
我们需要直接向一段内存中写入内容: 这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误: DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码; ...
- 视觉slam十四讲
对这个的学习一直都在,感觉到了这本书很强大呀!!! ch2---安装ubuntu:安装kdevelop. ch3---安装eigen3---几何模块:安装Pangolin可视化. ch4---安装So ...
- MVC之CodeFirst
1.建立MVC项目>NuGet安装EF 2.建立模型: public class Blog { [Key] [DatabaseGenerated(DatabaseGeneratedOption. ...
- 5F - Coin Change
Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make c ...
- JAVA 8.20 游戏:四子连(Java&C++)
(游戏:四子连 )四子连是一个两个人玩的棋盘游戏,在游戏中,玩家轮流将有颜色的棋子放在一个六行七列的垂直悬挂的网格中: 这个游戏的目的是在对手实现一行.一列或者一条对角线上有四个相同颜 ...
- hdu 1558 (线段相交+并查集) Segment set
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1558 题意是在坐标系中,当输入P(注意是大写,我当开始就wa成了小写)的时候输入一条线段的起点坐标和终点坐 ...
- JVM 体系结构概述 (一)
一.jvm运行在操作系统之上的,它与硬件没有直接交互: 二.JVM体系结构概览 JVM的基本结构:类加载器.执行引擎.运行时数据区.本地方法接口: 过程:class文件 ----> 类加载器 - ...
- The valid characters are defined in RFC 7230 and RFC 3986问题
这个问题困扰了我接近两天了!尼玛!网上搜了很多资料,有的给出了解决方案,然后下面的评论说按照楼主做的,没有成功,我一做也确实没有成功.设置了断点,一步一步跟进去看,还是没有头绪.不过有一点可以确认的是 ...
- Luogu 2577[ZJOI2005]午餐 - 动态规划
Solution 啊... 我太菜了唔 不看题解是不可能的, 这辈子都不可能的. 首先一个队伍中排队轮到某个人的时间是递增的, 又要加上吃饭时间, 所以只能使吃饭时间递减, 才能满足最优,于是以吃饭时 ...
- eclipse打开出现Failed to create the java virtual machine
低配伤不起呀... 这个问题经常是由于创建JAVA 虚拟机时,内存不足导致的,怎么办呢? 1.找到这么个文件:eclipse.ini(在哪?与ECLIPSE.EXE在一起,在一起...) 2.修改里面 ...