Re: [SQL ] 多重條件下,重複值的問題

看板Database (資料庫)作者 (Second)時間5年前 (2019/07/01 17:49), 5年前編輯推噓2(204)
留言6則, 2人參與, 5年前最新討論串3/4 (看更多)
舉個例子好了 比較好理解 A Table定義SPEC SPEC_ID C1_Minimun C1_Maximun R1_Minimun R1_Maximun 1 1 3 0 0 2 4 6 0 0 3 4 6 9 12 4 0 0 9 12 B Table 定義計算完的結果值 DATA_ID C1_Temp R1_Temp 1 5 10 ===> SPEC_ID = 3 , C1和R1兩者都符合SPEC,SPEC3優先2 2 5 5 ===> SPEC_ID = 2 , C1符合SPEC 3 2 11 ===> SPEC_ID = 1 , C1優先於R1,SPEC_ID 1優先4 4 7 11 ===> SPEC_ID = 4 , R1符合SPEC ※ 引述《ashin42 (Second)》之銘言: : 資料庫名稱: MS SQL SERVER 2017 : 資料庫版本: v17.9.1 : 內容/問題描述: : Hi 各位前輩早 : 我目前遇到了一個SQL的問題 , 我在資料表A定義了兩個參數的最大(C1和R1的Maximun) : 與最小值(C1和R1的Minimum) , 資料表B則是實際的資料帶有參數實際值得資料 , : 我期望串出來的SQL有優先順序 , 滿足C1和R1的Maximun和Minimum的資料優先被找出 , : 如果沒有再找出滿足C1的Maximun和Minimum的資料 , 如果沒有再找出滿足R1的Maximun和 : Minimum的資料 : 但如果SQL向下面這樣下會有重複的問題 , 會重複找到分別符合條件的資料 , 無法過濾 : 掉重複的 : and (B.C1_Temp >= A.C1_Minimum and B.C1_Temp <= A.C1_Maximun and B.R1_Temp >= : A.R1_Minimum and B.R1_Temp <= A.R1_Maximun ) : or (B.C1_Temp >= A.C1_Minimum and B.C1_Temp <= C1_Maximun) : or (B.R1_Temp >= A.R1_Minimum and B.R1_Temp <= R1_Maximun) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.191.52 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1561974547.A.0FC.html ※ 編輯: ashin42 (60.250.191.52 臺灣), 07/01/2019 17:55:11

07/01 19:35, 5年前 , 1F
DATA_ID 2 是不是同時符合 SPEC_ID 2 和 3
07/01 19:35, 1F

07/01 19:37, 5年前 , 2F
DATA_ID 4 是不是同時符合 SPEC_ID 3 和 4
07/01 19:37, 2F

07/02 08:39, 5年前 , 3F
是的DATA_ID 2同時符合 SPEC_ID 2和3
07/02 08:39, 3F

07/02 08:39, 5年前 , 4F
但有重複符合的狀況想要只取得SPEC_ID 3的結果
07/02 08:39, 4F

07/02 10:59, 5年前 , 5F
你上面的舉例DATA_ID 2 是取SPEC_ID 2 的結果,而不是 3
07/02 10:59, 5F

07/03 17:45, 5年前 , 6F
對 樓上大大正解 應該是DATA_ID 1 我打錯了
07/03 17:45, 6F
文章代碼(AID): #1T6TSJ3y (Database)
文章代碼(AID): #1T6TSJ3y (Database)