文档章节

关于SQL关联查询问题

BK灬
 BK灬
发布于 2017/06/30 11:38
字数 486
阅读 22
收藏 0
故事是这样的,有两个表,里面有2个相同的字段,我想通过这个字段把这两个表的内容链接起来,方法如下:

1.根据ID查询表1的内容,然后根据表1中与表2相同的字段去查询表2的内容

2.根据ID查询表1的内容,然后查询表2的内容(子嵌套),最后将两个结果集合起来

3.联合查询,问题在于只能连接两个表,并不能连接两个结果集

表结构

表1

表2

描述下查询的情景(表1的code是存在的,但是表2未必有表1的code,所以当这种情况发生的时候,查询的数据都是空,但是表1是有数据的,为了就是解决有数据的要显示问题)

查询语句1

SELECT cn. NAME AS cName,
 en. NAME AS eNama,
 cn. CODE,
 cn.rules,
 cn.gtype,
 group_concat(q.content SEPARATOR '__') AS content
FROM
	question_classification_cn AS cn,
	question_classification_en AS en,
	question AS q
WHERE
	1 = 1
AND cn.mId = '115'
AND en.mId = '115'
AND q.code_one = (
	SELECT
		CODE
	FROM
		question_classification_cn
	WHERE
		mId = '115'
)

结果1:空

查询语句2

SELECT
	cn. NAME AS cName,
	en. NAME AS eNama,
	cn. CODE,
	cn.rules,
	cn.gtype,
	CASE COUNT(q.content)
WHEN 0 THEN
	''
ELSE
	group_concat(q.content SEPARATOR '__')
END
FROM
	question_classification_cn AS cn,
	question_classification_en AS en,
	question AS q
WHERE
	1 = 1
AND cn.mId = '115'
AND en.mId = '115'
AND q.code_one = (
	SELECT
		CODE
	FROM
		question_classification_cn
	WHERE
		mId = '115'
)

结果2:空

查询语句3

SELECT
	cn. NAME AS cName,
	en. NAME AS eNama,
	cn. CODE,
	cn.rules,
	cn.gtype,
	'' AS content
FROM
	(
		question_classification_cn AS cn,
		question_classification_en AS en
	)
WHERE
	cn.mId = '115'
AND en.mId = '115'
UNION ALL
	SELECT
		'' AS cName,
		'' AS eNama,
		'' AS CODE,
		'' AS rules,
		'' AS gtype,
		(
			CASE COUNT(q.content)
			WHEN 0 THEN
				''
			ELSE
				group_concat(q.content SEPARATOR '__')
			END
		) AS content
	FROM
		question AS q
	WHERE
		code_one = 'A01.04.01.01'

结果3:

结果3就是最接近我想要的结果,如果把二行数据合成一行就再好不过了,前提是通过判断,合并好像都没怎么起作用,最后我选择了分开查询,也就是上述所说的方法1,SQL博大精深,666!

© 著作权归作者所有

上一篇: 2017-07-07
下一篇: 2017-06-30
BK灬

BK灬

粉丝 46
博文 344
码字总数 142852
作品 0
朝阳
后端工程师
私信 提问
Mybatis关联结果查询分页方法

在Mybatis分页插件的说明中有如下内容 不支持的情况 对于关联结果查询,使用分页得不到正常的结果,因为只有把数据全部查询出来,才能得到最终的结果,对这个结果进行分页才有效。因而如果是...

Liuzh_533
2014/06/05
11K
10
mysql 查询问题 (关联查询)

关于两个表 关联 查询问题: [A表] id cid jobs 1 10 产品经理 2 20 软件工程师 3 30 清洁工 ------------------ [B表] cid type 10 互联网 20 互联网 30 家政 ------------------ 我要查询[...

茄子何
2014/08/13
195
5
开源OLAP+数据可视化工具–For Apache Kylin

经过我和好友Rocky一段时间的修改和调试,现已将初版的Caravel For Kylin上传至Github,供大家使用,如有发现任何的问题,可通过本博客或github联系我们。 GitHub地址: https://github.com...

openthings
2016/06/13
651
0
关于复合索引设计的一个问题,鄙视下自己!!!

这是今天早上刚刚发现的一个问题,特意发帖与大家共勉,顺便鄙视下自己。 osc_opt_logs 是 OSChina 的动态表,用户做的任何动作都会在这个表里有一条记录,关于用户动态的设计说明请看我之前...

红薯
2012/11/15
505
8
Mybatis 示例之 Association (2)

版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/21007559 接上篇:Mybatis 示例之 Association 上一篇讲到了a...

isea533
2014/03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部