多表连接查询时,两个表中字段名重读导致 java.sql.SQLSyntaxErrorException: Duplicate column name ‘id‘

tech2024-06-22  68

         最近在写一个博客的项目时,就是在进行博客表与博客分类表进行连接查询时,报了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.*就不会出现这种错误,当然了,这样会导致查询数据的速度变慢,平时自己耍到无所谓,到了公司绝对不能这样做,需要哪几个字段的数据就查哪几个字段的数据

最新回复(0)