SQL --分支取数据
2019独角兽企业重金招聘Python工程师标准>>>
需求分析
1.写一条SQL语句,返回一个list,list中存放的对象有个属性是type(有三种情况),需求:根据这个type关联不同的表。
常规思路
先写SQL取到这个list,在判断list中每个对象的type,再根据不同的type再去数据库表里查询一次。
常规思路弊端
如果返回的是一个对象,这样分步做是没有问题的;但是这个地方返回的是一个list,在外层的list里面套个循环来判断每个对象的type,在根据type不同,分别去联合不同的表查数据,这种想法很明显的不是最佳方案,假设list的数据成千上百条,
在套个for循环,查询时间可想可知。
解决思路
mysql里面的case when
示例如下
SELECTtm.LINK_CONTENT_ID,tm.LINK_CONTENT_TYPE,tm.SEND_USER_ID,tui.USER_IMG,tui.NICKNAME,tm.ADD_TIME,tm.LINK_OBJ_ID,tm.LINK_OBJ_IMG,tm.LINK_OBJ_NAME,tm.MESSAGE_CONTENT,tm.RECEIVE_USER_ID,tm.SUPER_CMMT_ID,tm.SUPER_CMMT_CONTENT,tm.ROOT_CMMT_ID,tm.READ_FLAG,CASE
WHEN LINK_CONTENT_TYPE = '01' THEN(SELECTCONCAT((SELECTt_person.COMPANYFROMt_personWHEREt_person.PERSON_ID = tm.LINK_OBJ_ID),'||',(SELECTCONCAT((SELECTt_person.JOB_POSITIONFROMt_personWHEREt_person.PERSON_ID = tm.LINK_OBJ_ID))))FROMt_personWHEREt_person.PERSON_ID = tm.LINK_OBJ_ID)
WHEN LINK_CONTENT_TYPE = '02' THEN(SELECTt_hr.MOTTOFROMt_hrWHEREt_hr.HR_ID = tm.LINK_OBJ_ID)
WHEN LINK_CONTENT_TYPE = '03' THEN(SELECTt_enterprise.ENTERPRISE_SUMMARYFROMt_enterpriseWHEREt_enterprise.ENTERPRISE_ID = tm.LINK_OBJ_ID)
ELSE''
END AS linkObjInfo
FROMt_message tm,t_user_info tui
WHEREtm.SEND_USER_ID = tui.USER_ID
AND tm.RECEIVE_USE_FLAG = 0
AND tm.RECEIVE_USER_ID = 1000000001
AND tm.SEND_USER_ID != 1000000001
AND LINK_CONTENT_TYPE IN ('01', '02', '03')
ORDER BYtm.ADD_TIME DESC
LIMIT 20
转载于:https://my.oschina.net/u/2312022/blog/518969
SQL --分支取数据相关推荐
- JSP连接SQL数据库实现数据分页显示
<%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java& ...
- SQL语言之数据导入导出(Oracle)
数据的导入导出(Oracle) 一.数据库导入导出需要注意 目标数据库要与资源数据库有着名称相同的表空间: 目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同): 目标数据库每次在 ...
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
- SQL结构化数据查询语言培训讲义
一.SQL语言 SQL是结构化的查询语言(Structured Query Language),是关系型数据库通讯的标准语言.第一代SQL产品是Oracle,它是当今关系型数据库技术的领导之一. 1. ...
- mysql中常用的筛查语句,使用SQL语句进行数据筛选的方法
在使用VBA对数据库进行访问时,利用SQL语句能够方便地实现对数据库的查询.本文使用SQL语句实现多条件查询,使用Select语句从"成绩管理.accdb"数据库文件中获取1班中数 ...
- DB DBMS SQL 分别是什么?
DB DBMS SQL 分别是什么? DB: DataBase(数据库,数据库实际上在硬盘上以文件的形式存在) DBMS: DataBase Management System(数据库管理系统,常见的 ...
- SQL Server-检索数据
SQL Server-检索数据 1.select语句 2.检索单个列 3.检索多个列 4.检索所有列 5.检索不同的值 6.限制结果 该文章中使用的数据表创建于我的另一篇博客 点击前往 1.selec ...
- Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档
Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档 一.Debezium概述 二.SQL Server 连接器的工作原理 1.Snapshot ...
- 如何将分表汇总到总表_Excel如何实现将动态的分表数据汇总到总表
将分表数据汇总到总表,需要支持动态更新,这绝对是职场应用中的痛点.很多高手都是用VBA宏代码来搞定,代码难写,不易修改,也不太灵活.事实上,Excel自带的功能就能解决. 分析:解决这个问题最多的方法 ...
最新文章
- 降维打击:这款GAN可以让真人「二次元化」
- git checkout -b dev origin/dev详解
- Mysql逻辑架构介绍
- hdu 2049 不容易系列之(4)——考新郎
- 【POJ2387】Til the Cows Come Home (最短路)
- org.apache.jasper.JasperException: Unable to co...
- jQuery firefox chrome IE 绑定mousewheel事件
- 《机器视觉算法与应用》第3章 机器视觉算法之数据结构——学习笔记
- 线性反馈移位寄存器(LFSR,Linear Feedback Shift Register)
- vs2010 c语言乱码,从vs2010中复制带有中文字符的代码到office等时出现乱码的解决方案.doc...
- Ubuntu上git的简单使用,拉取远程分支,修改并提交
- Delphi皮肤控件分析与QQ的皮肤变色功能
- Matlab导出图片格式调整
- python杨辉三角居中_利用python打印杨辉三角
- AutoService+javaPoet+maven+注解自动生成java代码
- java总是标点符号报错_[javamail]AUTH LOGIN failed;Invalid username or password报错
- zabbix根据hostid输出主机名
- 【Cocos2d-X开发学习笔记】第15期:动作类之摄像机动作和基本样条动作的使用
- QQ五笔,正式公测版,与众Q友分享,附件
- 数据库从入门到删库跑路(二) - - PL/SQL