[SQL ] 這樣的情況能否有更快速的寫法

看板Database作者 (重出江湖)時間10年前 (2015/11/16 22:11), 10年前編輯推噓4(403)
留言7則, 5人參與, 最新討論串1/1
(針對 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

11/16 23:06, , 1F
有啊 你自己建一個temp table @@
11/16 23:06, 1F

11/17 09:52, , 2F
可以考慮用CTE
11/17 09:52, 2F

11/17 11:53, , 3F
不能直接OR嗎?
11/17 11:53, 3F

11/17 11:54, , 4F
aaa=1 and (bbb='2' or ddd='3' or ccc='4')
11/17 11:54, 4F

11/17 12:06, , 5F
樓上的方法比較正確 而且原始方法會導致 b=2&&d=3時
11/17 12:06, 5F

11/17 12:06, , 6F
資料行重複出現的可能
11/17 12:06, 6F

11/17 12:17, , 7F
原po有下union但沒下all因該就不會重複吧!
11/17 12:17, 7F
想請問一下 使用CTE的話 他WITH出來的結果是不能再下條件嗎? 怎麼我下條件都一直會錯 但是沒下就OK呢? ※ 編輯: aoksc (114.44.11.217), 11/17/2015 22:04:08
文章代碼(AID): #1MIUGSyP (Database)