表结构如下:

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)隐式转换错误的更多相关文章

  1. C# 中的隐式类型转换(运算时的隐式转换)和显示类型转换

    区别: 隐式转换失败编译会报错. 显示转换有可能精度丢失. 根据项目的编译设置,显示转换溢出可能会报错,如果设置溢出且未使用checked检查,运行时如果发生溢出会产出未知的计算结果. 在数字运算时, ...

  2. ERROR 1292(22007)

    ERROR 1292(22007) Table of Contents 1. 1292 1.1. 22007 1 1292   1.1 22007 错误信息 ERROR 1292 (22007): T ...

  3. 执行update语句mysql5.6报错ERROR 1292 (22007): Truncated incorrect DOUBLE value: '糖糖的坤大叔'

    执行修改语句update tbl_user_details set nickname=CONCAT("用户",yunva_id) where nickname = yunva_id ...

  4. 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 ...

  5. mysql中两表更新时产生的奇葩问题,产生死锁!

    如下一个两表更新语句 UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3 ...

  6. 有关使用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 ...

  7. 启动Eclipse时An internal error occurred during: "Initializing Java Tooling".错误

    解决方法一 重置窗口布局: windows > perspective > reset perspective 解决方法二: 如果上述方法不好使,采用下面的这种方法: 删除workspac ...

  8. SQL Server ->> 数据类型不一致比较时的隐式转换

    当使用操作符进行比较的时候,两边数据类型不一致的情况下,数据类型优先级别低的会往优先级别高的发生隐式转换.下面的参考链接是优先级别列表. 参考: Data Type Precedence (Trans ...

  9. Oracle :多表更新多个字段

    https://blog.csdn.net/funnyfu0101/article/details/52765235 总体原则:1)更新的时候一定要加where条件,否则必然引起该字段的所有记录更新 ...

随机推荐

  1. day 10 函数名的运用,闭包,迭代器

    函数名的本质 函数名本质上就是函数的内存地址 函数名的五种运用: 1.函数名是一个变量 def func(): print(666) print(func) # 函数的内存地址 <functio ...

  2. Git下基本命令操作

    提前准备好一个文件夹,并且进入该文件夹. 1.clone Github 上的Repository,如: git clone git@github.com:Git账号用户名/项目名称.git 2.仓库初 ...

  3. HttpClient上传文件

    1.上传客户端代码: public static void upload() { CloseableHttpClient httpclient = HttpClients.createDefault( ...

  4. activity背景毛玻璃效果

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  5. __block的初步用法

    再block中使用 self 时,要在前面加上__block. 防止在block中用到self时把self对象retain, 造成内存泄露. __block UIViewController *saf ...

  6. html5的地理位置定位

    html5提供的地理位置定位使开发人员不用借助其他软件就能轻松实现位置查找,地图应用,导航等功能. 地理位置定位基本原理GPS, WIFI, IP, 手机信号基站 核心对象Geolocation是wi ...

  7. 递归函数 day17

    一 递归函数 n = 1 金老板 38+2 =40n = 2 alex n+2= 金老板 36+2 = 38n = 3 wusir n+2 = alex wusir 36 def age(n): #n ...

  8. laravel框架数据迁移

    迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel 的 schema 构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手动添 ...

  9. 八皇后问题(dfs)

    #include <iostream> #include <stdio.h> using namespace std; ; ], b[], c[], vis[][]; //a, ...

  10. Codeforces 545E. Paths and Trees 最短路

    E. Paths and Trees time limit per test: 3 seconds memory limit per test: 256 megabytes input: standa ...