作者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