MYSQL 三张表查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL 三张表查询相关的知识,希望对你有一定的参考价值。
比如a表
ID
———
1
2
3
4
5
——
B表
IDa ---bcode
——————
1 , asdad
3 , cdgge
5 , wdw
——
C表
IDb , ccode
————————
2 , ojoj
4 , asdad
5 , cdgge
——————
怎么样能让查询结果
————————————
ID , aa ,bb , ab
————————-————
1 -- ---,a-----------------a
2 ---------------,b--------b
3 ----- ,a-----------------a
4-----------------b--------b
5 -----,a--------,b-------ab
——————————
解释一下查询结果 就是想, 以A表为列, 匹配B表有ID相同的 就单独成aa列
也就是 case when(a.id = b.id) then 'a' end as aa
bb列也是 同理,ab列就是concat(aa,bb)了
三张表实现这样的语句应该怎么写呢,请指点
而且在mysql下 数据大概1万条的时候根本无效率可言。。应该怎么办
才能又有效率有准确的多表查询
其实 最想得到的结果是
————————————
ID , ab
————————-————
1 -- ---, a
2 -------b
3 ----- ,a
4--------b
5 -----,ab
——————————
以A为查询基准, 匹配B 和C表, 结果显示在 AB列, 三种状态: 和B有相同ID的 显示为a, 和C表有相同ID的显示为b,
A, B ,C三个表中 有相同ID的 显示为ab
求解答,谢谢
我专门建了跟你一模一样的表,测试过了,出来的结果也跟你要的一模一样。
你最想要的结果:
SELECT aaa.id, concat_ws( '', REPLACE(bbb.bcode, bbb.bcode, 'a'), REPLACE(ccc.ccode, ccc.ccode, 'b')) ab FROM a aaa left Join b bbb ON ( aaa.id = bbb.ida ) left Join c ccc ON ( aaa.id = ccc.idb ) ORDER BY aaa.id ASC 参考技术A select a.ID,concat(b.bcode,c.ccode) from a left join b on (a.ID=b.IDa) left join c on (a.ID=c.IDb) order by a.ID;
如果三张表的ID字段名都叫ID的话,join 后面可以用using (ID)就可以了
select a.ID,concat(b.bcode,c.ccode) from a left join b on using (ID) left join c on using (ID) order by a.ID;
---------------
抱歉,以上错了,如果C表里有的ID,在B表里没有则不会被输出。
目前最好的方法是创建临时表,将A,B表整合后的结果输入临时表,然后在将临时表和C表进行数据整合。 参考技术B 你试试不用 语法构造,直接建立同类型(项目)关联,然后再查找。看看可不可行
MySQL 权限管理表设计
阅读目录
MySQL 权限管理表设计
权限管理需要用到五张表,其中包含三张主表(用户表、角色表、权限表)和两张关系表(用户角色关系表、角色权限关系表)
用户表 user
角色表 role
权限表 module
用户角色关系表 u_r
角色权限
以上是关于MYSQL 三张表查询的主要内容,如果未能解决你的问题,请参考以下文章