MySQL执行含连字符的DELETE语句返回空结果求助
解决MySQL DELETE语句匹配不到DATE类型数据的问题
嗨,这个问题的根源其实很简单——你忘记给日期值加单引号啦!
问题分析
你写的语句:
DELETE FROM custom_prices WHERE day IN (2018-04-01,2018-04-02,2018-04-03)
MySQL会把2018-04-01当成算术减法运算来解析:2018 - 4 - 1 = 2013,最终语句等价于:
DELETE FROM custom_prices WHERE day IN (2013, 2013, 2013)
而你的day列是DATE类型,自然不可能和数字2013匹配,所以返回空结果。就算你把day改成字符串类型,数字2013和字符串'2018-04-01'也完全不匹配,还是删不到数据。
正确的写法
给每个日期值加上单引号,让MySQL把它们识别为DATE字面量(或字符串):
DELETE FROM custom_prices WHERE day IN ('2018-04-01', '2018-04-02', '2018-04-03')
小建议
为了避免误操作或者再次出现匹配不到的情况,建议先执行SELECT语句验证匹配结果:
SELECT * FROM custom_prices WHERE day IN ('2018-04-01', '2018-04-02', '2018-04-03')
确认返回了你想要删除的行之后,再执行DELETE操作会更稳妥。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

