我有一个包含多个用户
的数据库,每个用户可以拥有多本书籍
。
我想根据表 book
中的(整数)sortorder
字段获取用户及其第一本书的列表。
下面是我现在使用的 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
最佳答案
您需要加入一个子查询,为每个用户选择第一本书。
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);
关于MySQL基于sortorder字段的JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120085/