【问题标题】:MySQL two table inner join and countMySQL两表内连接和计数
【发布时间】:2015-11-25 08:11:24
【问题描述】:

我有两张桌子:

// bookmark
| id | user | title |

// bookmarkItem
| itemID | bookmarkId |

我尝试从一个用户的所有书签中进行选择,并计算其中有多少项目。 我有一半工作的 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

但它不会写入带有零书签项-s 的书签。我想要的是将这些行显示为:

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

【问题讨论】:

    标签: mysql sql count inner-join


    【解决方案1】:

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

    改变

    INNER JOIN 
    

    LEFT JOIN
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        相关资源
        最近更新 更多