作者philander (everlasting )
看板Database
標題[SQL ] 用 DISTINCT 的時機
時間Tue Nov 15 15:03:19 2011
假設以下這些 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
1F:→ philander:我算的答案是 b,e 必須加上 DISTINCT, 不知道對不對!? 11/15 16:07
2F:→ fantasyj:A是key, 那where條件就應該是用A來串接吧? 11/16 08:03
3F:→ fantasyj:還有必須確認A欄位在各Table都是pk,如果不是當然會變笛卡 11/16 08:04
4F:→ fantasyj:爾乘積..多對多, 所以才要distinct.. 11/16 08:04