以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Select 语句的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61562)

--  作者:HappyFt
--  发布时间:2014/12/14 22:56:00
--  Select 语句的问题
 

Select * from 订单 where (订单编号 In (Select distinct 订单编号 from 订单 where 订单类别= \'库存订单\' And 订单编号>= \'1\' And 客户 like \'A%\') Or 订单编号 In (Select distinct 订单编号 from 订单明细 where 产品编码= \'A-001\' And 类别= \'B\'))

 

上述语句用了or是否效率会低呢,如果后面的两个查询中查询出来的唯一订单编号有重复的情况,能否将后面两个select语句先查询得到的订单编号先组合在一起这样效率更高?

下面这种写法正确吗?是否更高效?

Select * from 订单 where 订单编号 In (Select distinct 订单编号 from 订单 where 订单类别= \'库存订单\' And 订单编号>= \'1\' And 客户 like \'A%\' Union Select distinct 订单编号 from 订单明细 where 产品编码= \'A-001\' And 类别= \'B\')

 

谢谢!

[此贴子已经被作者于2014-12-14 22:59:12编辑过]

--  作者:有点甜
--  发布时间:2014/12/14 23:11:00
--  
 差不多。当然下面这个会更好一些。