使用UPDATE IGNORE与LOWER()函数的WHERE子句无生效问题
为啥你的UPDATE语句没生效?
嘿,我一眼就瞅出问题所在了——你的WHERE条件完全没命中任何行啊!
看你给的表数据,aname字段的值全是4010755600,但你的语句里却在拿LOWER(aname)去匹配'man on an island',这俩八竿子打不着,数据库当然找不到要更新的记录啦!
怎么改才能达到你的需求?
看你的描述,应该是想把那些dtitle是Man on an Island(不管大小写)的行,把aname统一改成'Man on an Island'对吧?那你得把WHERE条件里的字段换成dtitle才行:
UPDATE IGNORE discs SET aname = 'Man on an Island' WHERE LOWER(dtitle) = 'man on an island';
要是你其实想更新所有aname为4010755600的行,那更简单,直接这么写:
UPDATE IGNORE discs SET aname = 'Man on an Island' WHERE aname = '4010755600';
小提醒
执行UPDATE之前,最好先用SELECT语句确认一下筛选条件能选中你要的行,比如:
SELECT * FROM discs WHERE LOWER(dtitle) = 'man on an island';
这样能避免误更新不该动的数据~
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

