作者paul0407 (红尘过客)
看板Database
标题Re: [SQL ] 如何让选出的结果不DISTINCT??
时间Wed Oct 17 11:16:42 2007
※ 引述《canatmis (Guest~)》之铭言:
: ※ 引述《motokare ( fool. )》之铭言:
: : 大家好
: : 我用以下的SQL去搜寻
: : SELECT Discount FROM ChargeMaster WHERE ChargeID IN(SELECT ChargeID FROM
: : RegTrans WHERE sys_id='1') ORDER BY ChargeID ASC
: : Discount 是 ChargeMaster 底下的一个栏位
: : sys_id 是 RegTrans 底下的一个栏位
: : ChargeID 是 以上两个 table 之间共有的栏位(其值互相对应)
: : 现在我想要取 sys_id = 1 的 ChargeID
: : 然後选出这些 ChargeID 相对应的 Discount
: : 重复的话一定要列出来
: : 现在我光打 SELECT ChargeID FROM RegTrans WHERE sys_id='1'
: : 可以选出重复的 ChargeID (重复的不会被省略)
: : 可是用全部的语句下去跑 选出来的值却好像有被 DISTINCT 後的效果
: : 我爬了文也上了 google 找了一下 却没找到相关讯息
: : 不知道有没有人知道该怎麽解决?? 感觉就只差那麽一点点了
: : 先谢过了 谢谢!!!
: 有个疑问,感觉你的那个ORDER BY这样写怪怪的
: 不是都ORDER BY SELECT出来的栏位的吗怎是里面的条件栏位,且写在外面
: SELECT ChargeMaster.Discount
: FROM ChargeMaster, RegTrans
: WHERE sys_id = 1 AND ChargeMaster.ChargeID = RegTrans.ChargeID
: ORDER BY Discount ASC
: 请高手说明一下吧,我也不确定我写这样跑出来的是不是原PO要的
您这样写跑出来的结果应该根原PO之前的结果是一样的,
因为在WHERE子句中,预设是用Inner Join,
刚刚有仔细看原PO的需求,他要的应该是Outer Join的结果
SELECT ChargeMaster.Discount
FROM RegTrans Outer Join ON
RegTrans.ChargeID = ChargeMaster.ChargeID
Where sys_id = 1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.51.73