mysql特殊查询
来源:互联网 发布:数控激光切割机编程 编辑:程序博客网 时间:2024/05/16 18:10
一、问题描述---有a、b两张表,a表有字段aid,aname;b表有字段bid,bname。如下所图:
aid
aname
1
2
2
5
7
9
bid
bname
1
7
3
4
6
4
现在需要通过sql语句查询出已下格式的结果:
二、解决方案
mysql中不支持完全外连接,但是笛卡尔积的方式也不能完整查出我们要的数据,会有很多干扰数据。不妨先通过一个左连接、一个右连接,然后union起来,查询语句如下
select * from a left join b on a.aid =b.bidunion select * from a right join b on a.aid =b.bid
查询结果如下
查询出的结果并不是我们想要的,我们想把aid 和bid两列合并,这时候就要用到mysql中的和并列函数,查询sql如下
select substring_index( concat_ws(',',aid,bid) ,',',-1) as id,aname,bname from(select * from a left join b on a.aid =b.bid) as aaunion select substring_index( concat_ws(',',aid,bid) ,',',-1) as id,aname,bname from(select * from a right join b on a.aid =b.bid) as bb
查询结果如下:
三、遗留问题
不过这种方式毕竟不是最优化的方式,但是苦于我一直想不出优化的方式。一开始想走捷径,就想两张表直接union,通过行转列的方式。尝试的sql有:
select id, group_concat(name) from (select aid as id,aname as name from a union select bid,bname as name from b) as cgroup by id
查询结果如下:
这样虽然查出了数据,但是无法精确name哪个值是哪个id的
- mysql特殊查询
- mysql 特殊字符 查询 处理
- MySQL模糊查询特殊字符如何查询?
- mysql中特殊日期的查询
- mysql模糊查询匹配特殊字符
- mysql 查询特殊用法 相关题目
- MySql 模糊查询特殊字符处理
- 特殊查询
- 特殊unicode字符查询
- SQL特殊查询语句
- oracle特殊时间查询
- Oracle特殊字符查询
- Oracle 特殊查询(DDL)
- 特殊ASCII码查询
- 特殊查询sql记录
- 数据库特殊字符,‘()查询
- sql特殊查询
- SQL特殊查询
- java 使用正则Pattern等实现【搜索 -> 提取 -> 分割 -> 替换】功能
- 快开题了,想换个题目做
- EPOLL概述
- 求AOE网的关键路径
- 我在Salira的800天(2009.5.20~2011.7.29)-三.研究与学习篇
- mysql特殊查询
- 一个体现Java接口及工厂模式优点的例子
- 深入浅出C++之private/public/protected
- 菜鸟之驱动开发4
- VC程序的SECTION(3):.text
- 云参考框架 (大图)
- vs2010+wdk7600+XXX环境配置,随后2步最重要,其他和网上搜的大同小异
- CInternetSession的简单使用
- menu.addIntentOptions 添加动态菜单