You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL报错1235不支持LIMIT搭配IN子查询的UPDATE语句如何改写

MySQL 1235报错UPDATE语句改写方案

报错原因

你遇到的SQL Error (1235)报错是MySQL的固有语法限制:不支持在IN/ALL/ANY/SOME类型的子查询中直接使用LIMIT语法。
你的原SQL逻辑是要更新id_card表中,code值匹配%922846%且version最高的对应记录的division_category为678,可以通过以下两种方式改写:


改写方案1:子查询外层嵌套临时表(和原逻辑完全一致)

给内层带LIMIT的子查询多套一层临时表查询,即可绕开语法限制:

UPDATE id_card 
SET division_category='678' 
WHERE CODE IN (
    -- 额外套一层子查询生成临时表,绕过LIMIT限制
    SELECT t.code FROM (
        SELECT code  
        FROM id_card 
        WHERE CODE LIKE '%922846%' 
        ORDER BY version DESC LIMIT 1
    ) AS t
);

改写方案2:关联更新(性能更优,推荐使用)

用JOIN关联子查询结果的方式实现更新,执行效率更高:

UPDATE id_card a
INNER JOIN (
    SELECT code  
    FROM id_card 
    WHERE CODE LIKE '%922846%' 
    ORDER BY version DESC LIMIT 1
) b ON a.CODE = b.CODE
SET a.division_category='678';

内容的提问来源于stack exchange,提问作者Yogus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:24:03