mysql中多表连接(不使用join )为什么 超过三张表就报错? ?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

爱吃鱼的程序员 2020-06-05 15:35:59 61

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  //正常执行

 

 

关系型数据库 MySQL
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-05 15:36:19
                        <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了。

                        你的字符集排序不对
    
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题