多表更新时碰到的 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条件,否则必然引起该字段的所有记录更新 ...
随机推荐
- shell脚本实例总结
1.判断文件夹是否存在 #!/bin/sh workspace="/home/web/mall" #如果文件夹不存在 if [ ! -d ${workspace} ]; then ...
- 合并两个git仓库
现有两个git仓库ekt_zy.ekt_zijian,需要把ekt_zijian项目中的代码合并到ekt_zy项目中. 1 将ekt_zijian作为远程仓库.添加到ekt_zy中,设置别名为ziji ...
- SQL新增数据取表主键最新值
string strsql = "insert into SB_Survey(title) values ('标题');select @@IDENTITY"; int s = in ...
- python 字符串 列表 字典 常用方法
今天学习内容如下: 1.学习昨天练习题目的解题新方法 #1.使用while循环输入 1 2 3 4 5 6 8 9 10 ''' count = 0 while count < 10: coun ...
- PAT 1012 数字分类 (20)(代码+测试点)
1012 数字分类 (20)(20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求 ...
- JavaScript.how-to-debug-javascript
How to debug JavaScript code 1. 写一个HTML文件.例如: <!DOCTYPE html> <html> <title>Web Pa ...
- iOS.Notification.Bar.Color
Reference: http://apple.stackexchange.com/questions/44246/what-determines-the-special-color-of-the-s ...
- MySQL学习笔记-大纲
软件程序性能测试在之前<品味性能之道>系列中已经大量提到,讲解了很多测试方法.测试观念.测试思想等等.最近准备深入MySQL进行学习并总结.分别查阅<MySQL性能调优与架构设计&g ...
- [Robot Framework] SikuliLibrary的关键字执行依赖java进程,但是上次的java进程如果没有杀掉,robot framework控制台的日志出不来,怎么办?
如果在suite的setup里面杀掉java进程:AutoItLibrary.Run | taskkill /F /IM java.exe 执行sikuli的关键字会报这样的错误: Connectio ...
- hdfs结构
hdfs文件系统主要由四部分组成:client客户端.namenode.datanode.secondary namenode. client:1.分割文件成block. 2.与namenode交 ...