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

MariaDB UPDATE语句未匹配目标行,如何按LOCN1与LOCN2的范围更新LCNT字段?

MariaDB UPDATE语句未匹配目标行,如何按LOCN1与LOCN2的范围更新LCNT字段?

嘿,我一眼就瞅出问题所在啦!你想要更新的是142落在LOCN1到LOCN2区间内的行,但你写的WHERE条件逻辑完全搞反了。

你原来执行的错误语句是:

Update lochave SET LCNT = 11 WHERE LSC = 'E' and (LOCN1 >= 142 and LOCN2 <= 142);

这个条件要求LOCN1必须大于等于142,同时LOCN2必须小于等于142——说白了,只有当LOCN1和LOCN2完全等于142的时候才会匹配,但你的目标行是LOCN1=141、LOCN2=143,142明明在这个区间里,所以这个条件根本命中不了它。

正确的区间包含逻辑应该是:判断142是否大于等于LOCN1,并且小于等于LOCN2。对应的UPDATE语句应该写成这样:

UPDATE lochave SET LCNT = 11 
WHERE LSC = 'E' 
AND LOCN1 <= 142 
AND LOCN2 >= 142;

你可以先执行这条SELECT语句验证一下匹配的行:

SELECT id, lsc, lcnt, locn1, locn2 
FROM lochave 
WHERE LSC = 'E' 
AND LOCN1 <= 142 
AND LOCN2 >= 142;

这时候你应该能看到目标行(id=1961),再执行上面的UPDATE语句就能成功把它的LCNT改成11啦。

另外贴一下你之前提供的查询结果,方便对照:

MariaDB [booksgood]>  select id, lsc, lcnt, locn1, locn2 from lochave where lsc = 'E';

    +------+------+------+------------+------------+
    | id   | lsc  | lcnt | locn1      | locn2      |
    +------+------+------+------------+------------+
    | 1949 | E    |   22 |  11.000000 | 143.000000 |
    | 1950 | E    |   22 |  11.000000 |  29.000000 |
    | 1951 | E    |   22 |  29.000000 |  29.000000 |
    | 1952 | E    |   22 |  31.000000 |  49.200000 |
    | 1953 | E    |   22 | ...        | ...        |
    | 1961 | E    |   22 | 141.000000 | 143.000000 |
    +------+------+------+------------+------------+

备注:内容来源于stack exchange,提问作者Scott Downey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:04:38