This website requires JavaScript.

写delete...的sql语句还能报错?

分类:编程人生 发布于:2020-07-17 11:46:28 字数 737 515次阅读 数据库mysql

就在开发这个博客的时候,做评论功能,我发现我编程十年了,居然写不会一句sql语句。

delete from t_comment t where t.refId = #{refId,jdbcType=VARCHAR}

很简单的一问sql,就是根据引用的id将相关的评论删除。然后mysql很争气的给我报了如下错误:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where refId = 

后面的我没有截下来。反正就是说有错误。

我把这段sql补全,到navicat执行,它告诉我的意思是,t这个别名命名,是来自于select语句的。

看看正确的写法吧

delete t from t_comment t where t.refId = #{refId,jdbcType=VARCHAR}

delete from t_comment where refId = #{refId,jdbcType=VARCHAR}

我个人觉得第一个能成功,我好理解,但为什么第二个就能执行成功?难道真的是因为这个别名引起的?

后来通过查资料,才发现这个是mysql的版本闹的。我用的是mac的5.7.22 MySQL Community Server (GPL)版本,可能跟我之前用的mysql版本有差别。