开发者社区> 问答> 正文

mysql中多表连接(不使用join )为什么 超过三张表就报错? ?报错

select * from
 app ,   a ,  pa 
where app.ID = a.APP_ID and a.ID = pa.APPLICATION_ID  //报错

   Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' 

三张表明明都是一个字符集

select * from
 app ,   a , 
where app.ID = a.APP_ID  //正常执行

 

 

展开
收起
爱吃鱼的程序员 2020-06-05 15:35:59 821 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>个人建议: 把and换成","试试</p>
                    
    
                        <p>条件错了,多表连接,主表与从表连接必须是主表的外键,去连丛表的主键。反了的话,会形成多个数据形成三维表格,当然会报错。</p> 
    

    app,a,pa三张表是多对多关系,pa是关系表,那你的查询条件应该是

    select app.*,a.* from app,a,pa where app.id = pa.app表主键 and a.id = pa.a表主键

    //这样写一定不会报错!已经作测试,下面是在下写的代码和楼主的一模一样没报错。

     

                            对,多表不能用*代替,要加表名或者别名作为前缀
                        
    
                        <p>看错误提示好像是说字符集不一样,检查表以及字段的字符集吧</p>
                    
    
                        <p>字符编码调整一样就好。</p> 
    

    1.先把表的数据insert语句保存起来

    2.然后表重新建,表接口的字符编码要一样

    3.执行insert

    4.重新查询理论就ok了。

                        你的字符集排序不对
    
    2020-06-05 15:36:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像