MySQL JOIN基于sortorder字段

时间:2011-08-19 10:12:12

标签: mysql join

我有一个包含多个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

1 个答案:

答案 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);