最近在写一个博客的项目时,就是在进行博客表与博客分类表进行连接查询时,报了java.sql.SQLSyntaxErrorException: Duplicate column name 'id',网上查了查说的是id字段重复了,就是t_blog、t_type表中定义的主键都是id才导致的。
错误日志如下:
2020-09-03 17:46:35.071 ERROR 10824 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM ( select * from t_blog b left join t_type t on b.type_id = t.id WHERE b.title like "%" ? "%" and b.type_id = ? and b.recommend = ? ) TOTAL ### The error may exist in file [E:\idea\SpringBoot\blog_mybatisplus\target\classes\mapper\BlogMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM ( select * from t_blog b left join t_type t on b.type_id = t.id WHERE b.title like "%" ? "%" and b.type_id = ? and b.recommend = ? ) TOTAL ] with root cause java.sql.SQLSyntaxErrorException: Duplicate column name 'id'
第一个解决方法就是把两个表相同的字段名改一下,说实话有点麻烦
第二个解决方法就是把sql语句改一下,加个别名
注意:同样的这个别名也不能是另一表中的字段,如果是,还会报错
最重要的一点:其实这种错误,可以完全避免,只要你全写成b.*,t.*就不会出现这种错误,当然了,这样会导致查询数据的速度变慢,平时自己耍到无所谓,到了公司绝对不能这样做,需要哪几个字段的数据就查哪几个字段的数据