MySQL 两个 table 内连接并计数

MySQL two table inner join and count

我有两个表:

// bookmark
| id | user | title |

// bookmarkItem
| itemID | bookmarkId |

我尝试从一个用户的所有书签中 select 并计算其中有多少项。 我有一半工作 sql:

SELECT
    bookmark.id,
    bookmark.title,
    COUNT(bookmarkItem.itemId) AS count
FROM
    bookmark
    INNER JOIN bookmarkItem ON bookmark.id = bookmarkItem.bookmarkId
WHERE
    bookmark.user = 'username'
GROUP BY
    bookmark.id

但它不会用零书签项写入书签。我想要的是显示这些行,例如:

| id | title | count |
|----|-------|-------|
| 12 | asdfg |   15  |
| 13 | asdfh |   0   |
| 14 | asdfj |  145  |

这是因为您只有 select 个具有匹配书签项的书签。 (这就是 INNER JOIN 的工作原理。您需要一个 OUTER JOIN。)

改变

INNER JOIN 

LEFT JOIN

这样也可以得到没有书签项的书签。

对书签使用 LEFT JOIN table。这将给出书签 table 中的所有记录,即使 bookmarkItem 没有任何匹配的记录。