多表联查

lier_liujinming 2018-05-10 04:28:02
有一个book表主键book_id,包含外键user_id(作者名)

有一个chapter表,主键chapter_id,外键book_id,字段chapter_time(章节发布时间)

要列出已知user_id的一个用户的所有作品的最新章节,sql语句应该怎么写呢。
...全文
651 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lier_liujinming 2018-05-11
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
SELECT *
FROM
(
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY book.book_id ORDER BY chapter_time DESC) rn
    FROM chapter
        JOIN book
            ON chapter.book_id = book.book_id
    WHERE user_id = '用户id'
) t
WHERE rn = 1;


快吃饭了,晚上回来测试一下再给分
lier_liujinming 2018-05-11
  • 打赏
  • 举报
回复
引用 1 楼 RINK_1 的回复:


select * 
from book表 A
join chapter表 B ON A.book_id=B.book_id
where A.user_id='XXXXXX'
and not exists (select 1 from chapter表 where book_id=B.book_id and chapter_time>B.chapter_time)
快吃饭了,晚上回来自己测试一下再给分
二月十六 2018-05-10
  • 打赏
  • 举报
回复
SELECT *
FROM
(
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY book.book_id ORDER BY chapter_time DESC) rn
    FROM chapter
        JOIN book
            ON chapter.book_id = book.book_id
    WHERE user_id = '用户id'
) t
WHERE rn = 1;


RINK_1 2018-05-10
  • 打赏
  • 举报
回复


select * 
from book表 A
join chapter表 B ON A.book_id=B.book_id
where A.user_id='XXXXXX'
and not exists (select 1 from chapter表 where book_id=B.book_id and chapter_time>B.chapter_time)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧