我有一个包含多个users
的数据库,每个数据库都可以包含多个books
。
我希望根据表sortorder
中的(整数)book
字段获取用户列表及其第一本书。
以下是我现在使用的SQL示例。唯一的问题是它不会根据每个用户的sortorder
字段返回第一本书。
SELECT
b.id, b.user_id, b.sortorder, b.title
FROM
books AS b
JOIN
books_categories AS bc
ON
(b.id = bc.book_id)
JOIN
categories AS c
ON
(c.id = bc.category_id)
JOIN
users AS u
ON
(u.id = b.user_id)
GROUP BY
b.user_id
答案 0 :(得分:2)
您需要加入一个子查询,为每个用户选择第一本书。
SELECT b.id, b.user_id, b.sortorder, b.title
FROM books b
JOIN (
SELECT b2.user_id, min(b2.sortorder) sortorder
FROM books b2
GROUP BY b2.user_id
) first_books USING (user_id, sortorder);