现在有两张表:文章主表A(articleId,articleTitle),文章评论表B(commentId,articleId,commentTitle)现在我想实现这样的功能:列出文章列表,其中每篇文章标题下面列出此文章的前2个文章评论,请问sql语句怎么写啊?非常感谢

解决方案 »

  1.   

    select *
    from 文章主表A a left join 文章评论表B b on a.articleId=b.articleId
    where 2>(select count(articleId) from 文章评论表B where articleId=b.articleId and commentId<b.commentId)
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    楼上的不好意思,可能是我描述的不清楚,我刚才举得例子或许不对,我现在以刚才看的别网站的投票系统为例,你看看可以吗:-- 投票主表
    create table vote 

    voteID  int, 
    title nvarchar(20) 
    ) insert into vote select 1,'你最喜欢喝什么样子的啤酒' 
    insert into vote select 2,'你最喜欢的歌手是谁?' -- 候选项表
    create table voteOption 

    optionID  int, 
    voteID int,
    optionText nvarchar(50) 

    insert into voteOption select 1,1,'青岛啤酒'
    insert into voteOption select 2,1,'燕京啤酒'
    insert into voteOption select 3,1,'雪花啤酒'insert into voteOption select 4,2,'吕方'
    insert into voteOption select 5,2,'张楚'
    insert into voteOption select 6,2,'张学友'
    -- 投票动作表
    create table vote_action 

    actionid  int, 
    voteid   int,
    optionid int

    insert into vote_action select 1,1,1
    insert into vote_action select 2,1,3insert into vote_action select 1,2,4
    insert into vote_action select 2,2,5/* 
    一、页面上要得到这样的列表: 我的投票列表:
    1.你最喜欢喝什么样子的啤酒
    1.青岛啤酒
    2.燕京啤酒
    3.雪花啤酒
        2.你最喜欢的歌手是谁?
    1.吕方
    2.张楚
    3.张学友
    3....
    1. ..
    2. ..
    */ 
    /* 
    二、我的投票结果: 1.你最喜欢喝什么样子的啤酒
    我投票了给了 "青岛啤酒","雪花啤酒"
        2.你最喜欢的歌手是谁?
    我投票了给了 "吕方","张楚"
    3....
    1. ..
    2. ..
    */ drop table vote
    drop table voteOption
    drop table vote_action其中我刚才问得是第一个例子,第二个例子貌似只用sql语句不能实现吧?如果分不够我再加吧,
    非常感谢!!新年快乐~~~
      

  4.   

    上面插如动作表写错了,修改为如下:-- 投票动作表 
    create table vote_action 

    actionid  int, 
    voteid   int, 
    optionid int 

    insert into vote_action select 1,1,1 
    insert into vote_action select 2,1,3 insert into vote_action select 3,2,4 
    insert into vote_action select 4,2,5 
      

  5.   

    1> select * from vote
    2> select * from voteOption
    3> select * from vote_action
    4> go
    voteID     |title
    -----------|--------------------
              1|你最喜欢喝什么样子的啤酒
              2|你最喜欢的歌手是谁?(2 rows affected)
    optionID   |voteID     |optionText
    -----------|-----------|---------------------
              1|          1|青岛啤酒
              2|          1|燕京啤酒
              3|          1|雪花啤酒
              4|          2|吕方
              5|          2|张楚
              6|          2|张学友(6 rows affected)
    actionid   |voteid     |optionid
    -----------|-----------|-----------
              1|          1|          1
              2|          1|          3
              3|          2|          4
              4|          2|          5(4 rows affected)
    1>确认以上你的数据没有问题
      

  6.   

    select a.voteID,a.title,b.optionID,b.optionText
    from vote a inner join voteOption b on a.voteID=b.voteID1> select a.voteID,a.title,b.optionID,b.optionText
    2> from vote a inner join voteOption b on a.voteID=b.voteID
    3> go
    voteID     |title               |optionID   |optionText
    -----------|--------------------|-----------|----------------------------------------
              1|你最喜欢喝什么样子的啤酒        |          1|青岛啤酒
              1|你最喜欢喝什么样子的啤酒        |          2|燕京啤酒
              1|你最喜欢喝什么样子的啤酒        |          3|雪花啤酒
              2|你最喜欢的歌手是谁?          |          4|吕方
              2|你最喜欢的歌手是谁?          |          5|张楚
              2|你最喜欢的歌手是谁?          |          6|张学友(6 rows affected)
    1>
      

  7.   

    先谢谢楼上,如果你这么写,在以主表Vote分页时就没法判断了啊,譬如我现在每页要显示5个投票,然后还是列表方式展示:
        1.你最喜欢喝什么样子的啤酒
    1.青岛啤酒
    2.燕京啤酒
    3.雪花啤酒
        2.你最喜欢的歌手是谁?
    1.吕方
    2.张楚
    3.张学友
        3....
    1. ..
    2. ..
         ...