引出问题
平时在开发中写sql语句时。自己总有一个习惯是使用别名,因为多表联合查询时如果不使用别名会很不方便。久而久之就形成在写SQL语句时使用别名的好习惯。然而某次在写一个简单的删除语句时,出现问题一直报一个错误说我的sql语句错误,
DELETE FROM ai_models a where a.mcode = 'FL001';这是再简单不过的sql语句了,怎么会出错呢?而且我反复检查也没发现错误啊?反复折腾了好久都没找到原因,也不知道为什么。
解决方法
既然一种方法不行,那我就换一种方式,先备份数据在全部删除,结果发现没问题,可以正常删除。这时我发现问题出在体检上面,继续寻找原因,条件中的字段mcode是肯定存在的,问题绝不会是它造成的,难道是前面的表名缩写造成的?抱着试一试的态度,我去掉别名重新测试添加条件删除,测试结果删除成功。
至此找到原因,Mysql在执行删除语句时,表名一定不能添加别名,否则无法删除。目前还不理解它底层的运行的机制,至少能够知道如何正确的使用,能够让删除语句不出错正常执行不出错。