Mysql count(*)基于两个关系

时间:2016-11-29 21:42:38

标签: mysql

我想算一下(*)客户创建帖子或发表评论的程度。如果同一个客户发了几个帖子和评论,它应该只计算一次。

客户表:
ID Name ... < /强>
1 Jonh
2 Mark
3 King
4 Doe

邮政表:
ID USER_ID ... < /强>
1 1
2 1
3 3
4 1

评论表:
ID USER_ID ... < /强>
1 1
2 3
3 3
4 4

它应该返回count(*)= 3
user_id :1,3和4)。

2 个答案:

答案 0 :(得分:2)

试试这个。它对我有用,并返回你正在寻找的东西:

SELECT COUNT( USER_ID ) AS TOTAL
FROM (
SELECT USER_ID
FROM POSTS
UNION
SELECT USER_ID
FROM COMMENTS
)X

我使用POSTS和COMMENTS作为表名bc我不确定你的确切表名是什么,所以一定要在查询中更改这些名称。

答案 1 :(得分:1)

这应该有效:

SELECT COUNT(DISTINCT USER_ID) FROM (
SELECT USER_ID FROM POST_TABLE 
UNION
SELECT USER_ID FROM COMMENT_TABLE
)