作者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://www.ptt.cc/bbs/Database/M.1447683100.A.F19.html
推 bohei: 有啊 你自己建一個temp table @@ 11/16 23:06
推 a926: 可以考慮用CTE 11/17 09:52
推 clonk: 不能直接OR嗎? 11/17 11:53
→ clonk: aaa=1 and (bbb='2' or ddd='3' or ccc='4') 11/17 11:54
→ JeremyJoung: 樓上的方法比較正確 而且原始方法會導致 b=2&&d=3時 11/17 12:06
→ JeremyJoung: 資料行重複出現的可能 11/17 12:06
推 likesp999: 原po有下union但沒下all因該就不會重複吧! 11/17 12:17
想請問一下
使用CTE的話
他WITH出來的結果是不能再下條件嗎?
怎麼我下條件都一直會錯
但是沒下就OK呢?
※ 編輯: aoksc (114.44.11.217), 11/17/2015 22:04:08