问题描述
在一次业务中需要临时处理下业务绑定关系,方便排查问题,所以直接操作 MySQL 需要写更新语句,但是想一批一批的来排查缩小范围,于是有了下面这条 SQL,一运行,直接报错(MySQL版本:5.7.20)
This version of MySQL doesn‘t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery‘
UPDATE t_demo
SET foreign_id = '8bb4d552a13ea3147159bd7f5d5ca851'
WHERE id IN
(SELECT id FROM t_demo WHERE foreign_id = '#' LIMIT 0, 10)
解决方案
在中间插入一个子查询来代替,什么意思呢?直接上 SQL,这样即可绕过以上报错,完美~
UPDATE t_demo
SET foreign_id = '8bb4d552a13ea3147159bd7f5d5ca851'
WHERE id IN
(SELECT * FROM (SELECT id FROM t_demo WHERE foreign_id = '#' LIMIT 0, 10) A)