详细表结构是这样的:希望大家帮我出谋划策了..搞了三天了了.
ArticleID   ChannelID   ClassID  Title
486          1011        5        abc        
487          1022        5        cba
489          1039        9        abc
450          1039        5        abc
491          1039        6        aaa
大概有三万条吧..
功能:
1:把ChannelID=1039的数据全部取出来.
2:把取出来的数据,进行第二次取数据,如果ChannelID和ClassID和Title如果相等的话,就把数据取出来.
我试过了好多方法,好象都不完全正确..所以发上来给大家研究一下..

解决方案 »

  1.   

    1:select * from table where ChannelID=1039;
    1就不用说了
    2:用1的结果,就是后3条纪录
    可是ChannelID和ClassID和Title如果相等的话,怎么相等啊?是上下纪录,还是统一纪录
    什么意思啊?
    给出你希望的结果
      

  2.   

    结果出来的是:abc,abc,abc,其他的不重复的记录就不要了.
      

  3.   

    1的结果是:
    489          1039        9        abc
    450          1039        5        abc
    491          1039        6        aaa
    那为什么最后的结果是:abc,abc,abc
    希望详细的说明下
      

  4.   

    最简单的回答就是:当Title,ChannelID,ClassID都是一样的话,那么数据就显示出来..如果有一个不相同话都不显示出来.
      

  5.   

    ArticleID   ChannelID   ClassID  Title
    486          1011        5        abc        
    487          1022        5        cba
    489          1039        9        abc
    450          1039        5        abc
    491          1039        6        aaa
    结果出来的应该是:abc,abc.
    第一个abc因为ChannelID不相同,所以不显示出来.
      

  6.   


    select * from tbl a
    where channelid=1039 and not exists( select * from tbl where channelid=1039 
    and a.channelid=channelid and a.classid=classid
     and a.title=title and a.articleid>articleid)
      

  7.   

    你描述的和你的结果不一致
    ChannelID一样
    489          1039        9        abc
    450          1039        5        abc
    491          1039        6        aaa
    Title一样
    489          1039        9        abc
    450          1039        5        abc
    ClassID 一样,没结果了
      

  8.   

    搂主要所有的字段还是只要一个 Titleselect a.*
    from (
    select * from table where ChannelID='1039')a inner join 
    (
    select * from table where ChannelID='1039')b
    a.ClassID=b.ClassID and a.Title=b.Title and a.ArticleID<>b.ArticleID
      

  9.   

    select *
    from (
    select * from PE_Article where ChannelID='1039')a inner join 
    (
    select * from PE_Article where ChannelID='1039')b
    a.ClassID=b.ClassID and a.Title=b.Title and a.ArticleID<>b.ArticleID
    楼上的有错误.
    服务器: 消息 156,级别 15,状态 1,行 1
    在关键字 'from' 附近有语法错误。
      

  10.   

    表名:PE_Article
    结构:
    Article        ChannelID        ClassID     Title
    2317             1035              98        小妖精
    2318             1035              98          圣鹰
    2319             1035              98        戴郎顿
    2320             1035              98        MOTIMOHIEM
    2329             1035              98        老人头
    15541            1035              91        老人头
    14122            1035              98        老人头
    那么出来的结果是:只判断ChannelID,ClassID,Title,是否相等,相等就输出来.
      
     
      

  11.   

    select ChannelID,ClassID,Title,count(*) from PE_Article
    group by ChannelID,ClassID,Title
    having count(*)>=2
      

  12.   

    看这样行不?
    select  a.ChannelID, a.ClassID,a.Title
    from (
    select * from PE_Article where ChannelID='1039')a inner join 
    (
    select * from PE_Article where ChannelID='1039')b
    a.ClassID=b.ClassID and a.Title=b.Title and a.ArticleID<>b.ArticleID
      

  13.   

    select ChannelID,ClassID,Title,count(*) from PE_Article
    group by ChannelID,ClassID,Title
    having count(*)>=2 or ChannelID='1019'//多写个or
      

  14.   

    lwl0606(寒泉) ( )你用他的sql的时候主义多写空格
      

  15.   

    select DISTINCT  a.ChannelID, a.ClassID,a.Title
    from (select Article,ChannelID,ClassID,Title from PE_Article where ChannelID='1039') A inner join 
    (select  Article,ChannelID,ClassID,Title from PE_Article where ChannelID='1039') B ON 
    a.ClassID=b.ClassID and a.Title=b.Title and a.Article<>b.Article这样,测试过了,按照你上面的数据 ,如果改成1035 的话 结果是
    1035 98 老人头
      

  16.   

    HelloWorld_001(Hello) 你能否加一下我的Q呢 398711943
      

  17.   

    QQ好常时间都没上去(有个月了),只能上QQ游戏,密码是对的
    我都很郁闷!
      

  18.   

    有msn吗?
    [email protected]
    加下!
      

  19.   

    HelloWorld_001(Hello)的sql好像还和原意不符:“把取出来的数据,进行第二次取数据,”没体现:
    好像应该是
    select ChannelID,ClassID,Title,count(*) from (select * from PE_Article ChannelID='1019')group by ChannelID,ClassID,Title
    having count(*)>=2
    --用or的话相当于两句语句,而不是两张表
      

  20.   

    select a.* from tbl a inner join 
    (select ClassID,Title from tbl b 
       where ChannelID=1039 
       group by ClassID,Title
       having count(*)>1
    )
    where a.ChannelID=1039 and a.ClassID=b.ClassID and a.Title=b.Title上面语句没有上机试,不知有没有错,但方法肯定可行。
    就是先统计每种记录的条数,筛出两条及两条以上的,再在原纪录中找出来。
    如果你没有得出准确的结果,你要检查记录数据是否规范,如有没有NULL值,前后空格,大小写等情况,像这种统计和筛选的工作,这都是要注意的。
      

  21.   

    select a.* from tbl a inner join 
    (select ClassID,Title from tbl
       where ChannelID=1039 
       group by ClassID,Title
       having count(*)>1
    ) b 
    where a.ChannelID=1039 and a.ClassID=b.ClassID and a.Title=b.Title不好意思,回复后就发现了错误,内层查询的别名应该在括号外面!