对oracle中的sql语句的理解与不解
来源:互联网 发布:银联数据服务 编辑:程序博客网 时间:2024/06/06 03:43
近期由于做前端经常要查询数据库,根据不同的条件查询的数据并展示。这里就遇到了一些sql语句的一些问题,现进行总结整理。
先将一开始我的sql语句贴出来,其中model表是查询的主要信息表,然后在not exists中查询的是结果集是trBomPackageBiw中出现过的model的id,
现在的问题是where的第一个条件单独运行可以得到我想要的结果,查询需要的时间在2秒左右,or后面的条件单独运行也可以得到我想要的结果,需要的时间在1秒左右,现在我想将2个单独查询的结果进行合并,也就是下面的sql语句,不报错,但是查询时间超长,我登了5分钟也没出结果,后面就放弃了,但我不明白哪里的问题?
SELECT distinct model.ID id, model.STR_SEQUENCE strSequence, model.INSTANCE_NAME_ZH instanceNameZh, model.INSTANCE_NAME_EN instanceNameEn, model.PBOM_ID pBomId, model.VARIATE_CONDITION variateCondition, model.SVPPS svpps, model.SHORT_SVPPS shortSvpps, model.FFC ffc, model.FFC_DESCRIPTION_ZH ffcDescriptionZh, model.FFC_DESCRIPTION_EN ffcDescriptionEn, model.FFC_ID ffcId, model.PART_TYPE partType, model.PARENT_ID parentId, model.ENGINEERING_LEVEL engineeringLevel, model.PART_INDENTIFICATION partIndentification, model.QUANTITY quantity, model.THICKNESS thickness, model.OLD_PART_NUMBER oldPartNumber, model.ThirdD_PART_NUMBER thirdDPartNumber, model.ThirdD_PART_VERSION thirdDPartVersion, model.PART_STATUS partStatus, model.PART_PHASE partPhase, model.SYMMETRY symmetry, model.SYMMETRY_PART_NUMBER symmetryPartNumber, model.PARENT_PART parentPart, model.PART_SOURCE partSource, model.SW_IMPORT swImport, model.EWO_ID ewoId, pbom.PART_NUMBER partNumber FROM BOP_TM_BIW_BOM model LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id = trBomPackageBiw.BIW_BOM_ID LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID = trBomPackageBiw.Package_Id where not exists( SELECT distinct trBomPackageBiw.Biw_Bom_Id from Bop_Tr_Bom_Package_Biw trBomPackageBiw where model.id=trBomPackageBiw.Biw_Bom_Id )AND model.DATASET_ID = 2000039 or (bopTmpackage.PACKAGE_CODE = 18990 AND trBomPackageBiw.RELEATION_TYPE != '0') ORDER BY model.STR_SEQUENCE后来我又用了union语句,分别查询在合并就可以了,速度很快,但这里要注意的是,我需要对查询的数据进行排序,然后我就用了order by model.strSTR_SEQUENCE语句,发现报错,进过百度知道order by 和union不能一起用,但是用order by 数字(此数字对应需要排序的字段的位置数)就可以。
还有一点union是数据集的合并,INTERSECT是数据集的交集,其他具体的可以看此处链接。oracle基础
ELECT distinct model.ID id, model.STR_SEQUENCE strSequence, model.INSTANCE_NAME_ZH instanceNameZh, model.INSTANCE_NAME_EN instanceNameEn, model.PBOM_ID pBomId, model.VARIATE_CONDITION variateCondition, model.SVPPS svpps, model.SHORT_SVPPS shortSvpps, model.FFC ffc, model.FFC_DESCRIPTION_ZH ffcDescriptionZh, model.FFC_DESCRIPTION_EN ffcDescriptionEn, model.FFC_ID ffcId, model.PART_TYPE partType, model.PARENT_ID parentId, model.ENGINEERING_LEVEL engineeringLevel, model.PART_INDENTIFICATION partIndentification, model.QUANTITY quantity, model.THICKNESS thickness, model.OLD_PART_NUMBER oldPartNumber, model.ThirdD_PART_NUMBER thirdDPartNumber, model.ThirdD_PART_VERSION thirdDPartVersion, model.PART_STATUS partStatus, model.PART_PHASE partPhase, model.SYMMETRY symmetry, model.SYMMETRY_PART_NUMBER symmetryPartNumber, model.PARENT_PART parentPart, model.PART_SOURCE partSource, model.SW_IMPORT swImport, model.EWO_ID ewoId, pbom.PART_NUMBER partNumber FROM BOP_TM_BIW_BOM model LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id = trBomPackageBiw.BIW_BOM_ID LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID =trBomPackageBiw.Package_Id where not exists( SELECT distinct trBomPackageBiw.Biw_Bom_Id from Bop_Tr_Bom_Package_Biw trBomPackageBiw where model.id=trBomPackageBiw.Biw_Bom_Id )AND model.DATASET_ID = 2000039 union SELECT distinct model.ID id, model.STR_SEQUENCE strSequence, model.INSTANCE_NAME_ZH instanceNameZh, model.INSTANCE_NAME_EN instanceNameEn, model.PBOM_ID pBomId, model.VARIATE_CONDITION variateCondition, model.SVPPS svpps, model.SHORT_SVPPS shortSvpps, model.FFC ffc, model.FFC_DESCRIPTION_ZH ffcDescriptionZh, model.FFC_DESCRIPTION_EN ffcDescriptionEn, model.FFC_ID ffcId, model.PART_TYPE partType, model.PARENT_ID parentId, model.ENGINEERING_LEVEL engineeringLevel, model.PART_INDENTIFICATION partIndentification, model.QUANTITY quantity, model.THICKNESS thickness, model.OLD_PART_NUMBER oldPartNumber, model.ThirdD_PART_NUMBER thirdDPartNumber, model.ThirdD_PART_VERSION thirdDPartVersion, model.PART_STATUS partStatus, model.PART_PHASE partPhase, model.SYMMETRY symmetry, model.SYMMETRY_PART_NUMBER symmetryPartNumber, model.PARENT_PART parentPart, model.PART_SOURCE partSource, model.SW_IMPORT swImport, model.EWO_ID ewoId, pbom.PART_NUMBER partNumber FROM BOP_TM_BIW_BOM model LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id =trBomPackageBiw.BIW_BOM_ID LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID = trBomPackageBiw.Package_Id where bopTmpackage.PACKAGE_CODE = 18990 AND trBomPackageBiw.RELEATION_TYPE != '0' ORDER BY 2
0 0
- 对oracle中的sql语句的理解与不解
- oracle中的sql语句,对数据库的完全操作
- Oracle与SQL Server对Update语句的处理
- 对oracle select语句的理解
- Oracle PL/SQL之令人不解的提示(nls_date_format)
- oracle 分页sql语句的深入理解
- oracle对动态sql语句的处理
- 对csdn blog的不解
- Oracle中的sql语句
- Oracle中对表中的字段进行增、删、改的SQL语句
- oracle的SQL语句in中的限制
- Oracle与MySQL的SQL语句区别
- oracle中的sql语句中timestamp与字符串转换
- ORACLE和SQL SERVER的SQL语句中的一些区别
- 加强对(Oracle)SQL语句的学习(0)
- Oracle SQL 语句对时间操作的总结
- Oracle SQL 语句对时间操作的总结
- oracle监控sql语句对表的操作
- spring boot 学习(十一)使用@Async实现异步调用
- Nlogn最长上升子序列
- poll机制的总结
- Sonar6.0应用之四:与Jenkins集成分析(Scanner+Maven)
- 邻接表
- 对oracle中的sql语句的理解与不解
- Spring MVC 教程,快速入门,深入分析
- Java基础--容器(2)
- HDU2824【欧拉函数性质】
- UltraEdit正则表达式
- Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
- 在线编译器
- Sonar6.0应用之五:Sonar web分析配置
- Android 优雅的为RecyclerView添加HeaderView和FooterView