【发布时间】:2014-06-28 16:57:36
【问题描述】:
我有两个表格('posts' 和 'votes'),允许用户对帖子投赞成票('votes' 中的 rating = 1)或不赞成('votes' 中的 rating = 0) .
我在查询中加入这两个表并尝试过滤结果,以便一行仅显示它是否具有 2+ 正(评级 = 1)评级和 2+ 负(评级 = 0)评级'votes' 表('post_id' 和 'rating' 列)。
这是我得到的,但它没有按预期工作,因为它带回的结果也只有 1 个赞成票和 1 个反对票 - 尽管由于每个投票的集合,您看不到这一点post -- 这不是我想要的('HAVING' 行没有按预期工作):
SELECT *, COUNT(*)
FROM posts p
JOIN votes v ON p.id = v.post_id
WHERE rating = 1 OR rating = 0
GROUP BY p.id
HAVING COUNT(rating = 1) > 1 AND COUNT(rating = 0) > 1
+----+---------+----------+----------+
| id | post_id | rating | COUNT(*) |
+----+---------+----------+----------+
| 4 | 4 | 0 | 2 |
| 7 | 7 | 0 | 2 |
| 9 | 9 | 0 | 2 |
| 83 | 83 | 1 | 2 |
+----+---------+----------+----------+
【问题讨论】: