日期:2014-05-19  浏览次数:20464 次

三张关联后取唯一记录为什么结果不正确呢
select   distinct   a.a1,b.b1,c.c1   from   a,b,c   where   a.a1=b.b1   and   a.a1=c.c1   order   by   c.c1   desc

a是新闻表
b是新闻分类表
c是新闻的留言表

a中40多条记录
b中12条记录
c中3条记录,但有2条是同一条新闻的留言。

本人的目地是想按留言表的倒序取新闻记录,指向同一条新闻的留言取一条就可以了,结果应得到2条不同的记录,但我这条语句执行后却得到3条记录,其中有两条是一样的。加DISTINCT没有起到作用,不知该如何处理才好。


------解决方案--------------------
select distinct a.a1,b.b1,c.c1 from a,b,c where c.c1=b.b1 and c.c1=a.a1 order by c.c1 desc
------解决方案--------------------
--try


A(AID int, Title varchar(10), BID int)
B(BID int, TypeName varchar(10))
C(CID int, Title varchar(10), AID int)


select * from A
inner join B on A.BID=B.BID
left join
(
select * from C as tmp
where not exists(select 1 from C where AID=tmp.AID and CID> tmp.CID)
)C on A.AID=C.AID
------解决方案--------------------
在视图设计器中,做吧,加上左联 或 右联 应该就能解决
------解决方案--------------------
关注额 自己倒是没发生过这种事情 显示一样应该可以不显示重复吧