sql查询的问题,详见内容,求大神不腻赐教

问题描述

公司的这个查询需要优化,不知道这段逻辑应该怎么写...简化模型如下:t表 有 a b c 三个字段原sql为:select * from twhere a = "配送"and b = 2unionselect * from twhere a = "收款"and c =2能用一个select 语句搞定吗?应用中表达的意思就是查询出来配送或者收款到达2这个阶段的订单望大神不腻赐教 问题补充:除此之外的 相同的查询条件大概有10来个,用 or的话貌似不太好吧,太多重复代码

解决方案

300万只能是小表,随便哪个数据库都可以用or来完成,楼主多虑了。
解决方案二:
如果能够保证“配送”和“收款”没有重复记录的话,使用Union All效率会高些:select * from t where a = "配送" and b = 2 union allselect * from t where a = "收款" and c =2
解决方案三:
数据少的话无所谓,or可能简单明了300W条那应该是union效率高吧,or不走索引了,union每次单独查询可以走索引。具体时间自己对比下,个人觉得union效率高
解决方案四:
还有一个办法就是冗余状态,把你想要快捷查询出结果的状态,在增改时就写入额外的字段,这样只需要差一个字段,比如EX_STATUS:0,未收款并且b=1,c=11,已收款并且b=1,c=1。。。以此类推,可以在程序端写代码,也可以用触发器,这个其实是不太推荐的,复合状态并不应该是对象的直接属性。对数据库也不是非常擅长。。。
解决方案五:
select * from twhere (a = "配送"and b = 2) or (a = "收款"and c =2 )
解决方案六:
select * from t where (a = '配送' and b = 2) or (a = '收款' and c =2)

时间: 2024-08-01 23:41:24

sql查询的问题,详见内容,求大神不腻赐教的相关文章

数据库-sql server 2008 综合题,求大神指点,我建了一部分表,大神在做的时候可按自己方便插入:

问题描述 sql server 2008 综合题,求大神指点,我建了一部分表,大神在做的时候可按自己方便插入: 因为综合题练得比较少不懂得怎样联系:大神回答时,尽量详细,多谢, 做的好的话,C币还可加: 具体要求: 某公司有很多类型的货车(小型货车,双轴货车,16轮货车等),货车要有货车号, 货车类型(小型货车,双轴货车,16轮货车),载重量,有很多司机,每个司机可开 多种类型的货车,司机要有司机号,姓名,地址,薪水,司机运输货物时有货物名称, 目的地,出发时间,返回时,要更新记录,有返回时间,

解决-查询更新Oracle C# 问题求大神支援

问题描述 查询更新Oracle C# 问题求大神支援 目前我DB里面有张表,每次做动作之前我都要先去查询表中的某个栏位,然后更新它, 那么问题来来,我同时做动作的的,有多个SQL去查询他然后更改它,那么就会出现这样的 情况,我第一查询的值是正确的,在我第一更改这个值之前,我的第二次查询过来了,那我 地次查询到的值不是第一次更新后的值,那我的第二次更新就毫无意义了,问下大神这个问题 该如何解决 解决方案 这个用事务应该可以解决的,关于如何用事务你可以百度一下 如果回答对您有帮助,请采纳 解决方案二

菜鸟 求解答-orcale中between and的sql语句怎么写啊!求大神指导

问题描述 orcale中between and的sql语句怎么写啊!求大神指导 就是我想查询数据库中name列里随便一个范围内的数据 该怎么写呢, 解决方案 你的name是什么类型的? 字符串的话只能用枚举了. name in ('a','b','c') 如果是说数字类型或者日期时间类型,可以用 between and 或者 > < 当然也可以枚举 举例如下: 字段类型: name varchar2(30), age int(3) select * from tableName where n

数据库-sql语句按年怎样分组 求大神支招

问题描述 sql语句按年怎样分组 求大神支招 比如下面:比如字段两列 A B2011 1002011 602011 702012 2002012 2502013 3002013 400 我想最后得到分组结果 比如:2011年的为一个数组 array( 2011 => 100 2011 => 60 2011 => 70 )然后 2012和2013 和2011 一个道理求大神支招 解决方案 --> 测试数据:[tb]if object_id('[tb]') is not null dr

图片-My sql服务启动不了,求大神帮帮忙!

问题描述 My sql服务启动不了,求大神帮帮忙! 第一张图片是我按照网上的教程添加的一个文本文件,里头有一些代码. 问题就如第二张图所示,服务无法启动,但是却没有发现任何错误.有谁能帮我吗 解决方案 直接命令行启动服务试试,然后出错后查看一下系统日志中的错误描述信息 解决方案二: 是不是要在最前面要加一行? [mysqld] 解决方案三: 在你的my.ini文件里啊,而且你先启动mysqld没有 ,C:>mysqld-nt.exe --install MySQL-noinstall --def

exception-在java链接MS SQL时出现的问题,求大神们指教

问题描述 在java链接MS SQL时出现的问题,求大神们指教 严重: Servlet.service() for servlet dispatcherServlet threw exception java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLo

查询-html下拉列表联动,求大神指点

问题描述 html下拉列表联动,求大神指点 我是用jquery datatable实现的table,现在有状态和在线两个下拉列表,现在只能实现状态和在线分别查询,如何将两个下拉列表关联起来呢?最好前台实现 解决方案 这个是用ajax实现的,给它一个onchange事件,然后在里面用ajax实现的,因为你前面一个变化就会有一个值传递到后台查询数据库然后从数据库里读取第二个下拉的值,然后返回页面赋给第二个下拉的: 解决方案二: 加载一个onchange事件

php嵌套循环分类怎么写---求大神帮帮忙呀!

问题描述 php嵌套循环分类怎么写---求大神帮帮忙呀! 鼠标悬停的时候,自动显示大分类下的小分类.(JS已经写出来了,就是php部分不会嵌套) <li class="nav-sub" data-tips="sub-school"> <a href="<{:U('Product/products')}>" class="tit">销售与支持</a> <div class=&

jsp-分类汇总问题,求大神详细指导下,跪求

问题描述 分类汇总问题,求大神详细指导下,跪求 下边是我实现第二个图的代码,现在我想实现第二张图查询出来的模式,求大神指导下怎么弄,跪求~ public String getList() throws Exception { chengJiJiLuList = dao.getList(TrainingOrCompetitionIDstartTimeendTime); ArrayList chengJiJiLuList = new ArrayList(); coreService.getRsToO