作者aoksc (重出江湖)
看板Database
标题[SQL ] 这样的情况能否有更快速的写法
时间Mon Nov 16 22:11:37 2015
(针对
SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
资料库名称:SQL SERVER
资料库版本:2008、2012
内容/问题描述:
请问各位
如果有某个查询其实条件都差不多
但因为有用到OR的情况所以我用union来合并查询结果代替OR
像是这样
select * from xxx where aaa=1 and bbb='OOXX'
union
select * from xxx where aaa=1 and ddd='2015/11/11'
union
select * from xxx where aaa=1 and ccc=9527
想请问一下
是否有类似先取得select * from xxx where aaa=1的结果暂存
再去套bbb、ccc、ddd的查询条件是不是会更快
请问有这种写法吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.42.225.168
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1447683100.A.F19.html
1F:推 bohei: 有啊 你自己建一个temp table @@ 11/16 23:06
2F:推 a926: 可以考虑用CTE 11/17 09:52
3F:推 clonk: 不能直接OR吗? 11/17 11:53
4F:→ clonk: aaa=1 and (bbb='2' or ddd='3' or ccc='4') 11/17 11:54
5F:→ JeremyJoung: 楼上的方法比较正确 而且原始方法会导致 b=2&&d=3时 11/17 12:06
6F:→ JeremyJoung: 资料行重复出现的可能 11/17 12:06
7F:推 likesp999: 原po有下union但没下all因该就不会重复吧! 11/17 12:17
想请问一下
使用CTE的话
他WITH出来的结果是不能再下条件吗?
怎麽我下条件都一直会错
但是没下就OK呢?
※ 编辑: aoksc (114.44.11.217), 11/17/2015 22:04:08