[SQL ] 用 DISTINCT 的時機

看板Database (資料庫)作者 (everlasting )時間14年前 (2011/11/15 15:03), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
假設以下這些 Relations : R,S,T,V,W 只有 A 這個 key 像下面幾個例子 哪些若不加上 "DISTINCT", 顯示出的 record 數目會不同? (a) SELECT DISTINCT R.A, S.A FROM R, S WHERE R.B = S.C (b) SELECT DISTINCT R.A FROM R, S WHERE R.B = S.C (c) SELECT DISTINCT R.A FROM R, S WHERE R.B = S.A (d) SELECT DISTINCT R.A FROM R,S,T,V,W WHERE R.B = S.A AND R.D = T.D AND R.C = V.A AND T.A = S.B AND W.A = S.D (e) SELECT DISTINCT R.A FROM R, S, T WHERE R.B = T.A AND R.B = S.C ----------------------------- 這題感覺是跟 privileged table 還有所謂的 reaches 有關 有人可以解釋一下原因嘛!? 感謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.193.69.31

11/15 16:07, , 1F
我算的答案是 b,e 必須加上 DISTINCT, 不知道對不對!?
11/15 16:07, 1F

11/16 08:03, , 2F
A是key, 那where條件就應該是用A來串接吧?
11/16 08:03, 2F

11/16 08:04, , 3F
還有必須確認A欄位在各Table都是pk,如果不是當然會變笛卡
11/16 08:04, 3F

11/16 08:04, , 4F
爾乘積..多對多, 所以才要distinct..
11/16 08:04, 4F
文章代碼(AID): #1EmWwwvJ (Database)
文章代碼(AID): #1EmWwwvJ (Database)