三个表用户表:
table 用户
字段 userid文章表:
table log 
字段:logid,userid评论表:
table review
字段 reviewid,logid,userid================
列出有某用户评论的文章,并以文章最新评论排序。就象这里“我参与的帖子”功能,一条sql怎以写?

解决方案 »

  1.   

    try:declare @userid varchar(10)
    set @userid='xxx'select
        t.*
    from
        log t
    where
        exists(select 1 from review where logid=t.logid and userid=@userid)
    order by
        (select max(reviewid) from review where logid=t.logid) desc
      

  2.   

    好象不行,是用mysql 5.0的。
    sql输出:
    "select A.LogKey,A.LogTitle,B.UserName from logs AS A left join users AS B on A.LogUserId=B.UserKey exists(select 1 from reviews where reviewLogId=A.LogKey and reviewUserId=2944) order by (select max(reviewKey) AS reviewKey from reviews where reviewLogId=A.LogKey) desc limit 20;"错误显示:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exists(select 1 from reviews where reviewLogId=A.LogKey and reviewU' at line 4
      

  3.   

    select 
      A.LogKey,
      A.LogTitle,
      B.UserName 
    from 
      logs AS A 
    left join 
      users AS B 
    on 
      A.LogUserId=B.UserKey 
    where 
      exists(select 1 from reviews where reviewLogId=A.LogKey and reviewUserId=2944) 
    order by 
      (select max(reviewKey) AS reviewKey from reviews where reviewLogId=A.LogKey) desc limit 20
      

  4.   

    mySql的语法是什么样的啊? 
      

  5.   


    select logid from review where userid='wangsan' order by reviewid desc这样?
      

  6.   

    select * from (select logid,row_number() over(order by reviewid) rank from review where userid='aaa') order by rank
      

  7.   


    select max(reviewid),logid from (
    select * from review where userid=xxx
    ) t
    group by logid
      

  8.   


    set @userid='xxx';
    select
        t.*
    from
        log t
    where
        exists(select 1 from review where logid=t.logid and userid=@userid)
    order by
        (select max(reviewid) from review where logid=t.logid) desc
    去执行一下吧!
      

  9.   

    mysql得开个版啊。这顺便就写了
      

  10.   

    今晚再試試看,
    好象mysql不支持這句exists(select 1 from review where logid=t.logid and userid=@userid)
      

  11.   

    目前我用这样的可以,效率怎么样不知道select 
      distinct
      A.LogKey,
      A.LogTitle,
      B.UserName 
    from 
      logs AS A 
    left join 
      users AS B 
    on 
      A.LogUserId=B.UserKey 
    left join 
      reviews AS C
    on 
      C.reviewLogId=A.LogKey
    where 
      C.reviewUserId=2944 
    order by 
      (select max(reviewKey) AS reviewKey from reviews where reviewLogId=A.LogKey) desc limit 20