我有一个名为'blogDetails'的表,其中包含blogId,userId,blogTitle,blogContent 我有另一个名为'blogPopularity'的表,其中包含blogId,userId,popularStat。
现在在第二个表(blogPopularity)中,'popularStat'字段可以包含'L'(对于喜欢)或'D'(对于不喜欢)。
我正在使用存储过程将两个内容(到blogDetails)和喜欢/不喜欢状态(到blogPopularity)插入。
我想显示每个博客的喜欢和不喜欢的数量。
有人建议我怎么做。
答案 0 :(得分:4)
SELECT a.blogId,
a.blogTitle,
SUM(CASE WHEN b.popularityStat = 'L' THEN 1 ELSE 0 END) `LIKES`,
SUM(CASE WHEN b.popularityStat = 'D' THEN 1 ELSE 0 END) `DISLIKES`
FROM blogDetails a
LEFT JOIN blogPopularity b
ON a.blogID = b.blogID
GROUP BY a.blogId, a.blogTitle
示例结果
╔════════╦═══════════╦═══════╦══════════╗
║ BLOGID ║ BLOGTITLE ║ LIKES ║ DISLIKES ║
╠════════╬═══════════╬═══════╬══════════╣
║ 1 ║ Title1 ║ 7 ║ 3 ║
║ 2 ║ Title2 ║ 6 ║ 4 ║
║ 3 ║ Title3 ║ 3 ║ 1 ║
╚════════╩═══════════╩═══════╩══════════╝