COUNT(DISTINCT)有条件

时间:2014-02-24 05:19:21

标签: mysql select db2

我有3个表来从单个Select语句中检索

中的值

DISCUSSIONUSER_INFO& DISCUSSION_COMMENT.

DISCUSSION_COMMENT中,我有一个USER_ID列,我需要计算不同的条目。

这里我用了

SELECT COUNT(DISTINCT USER_ID) FROM DISCUSSION_COMMENT

并且工作正常。

但我需要制作一个select语句来从

获取所有行值

DISCUSSIONUSER_INFO并使用DIS_ID中的值DISCUSSION来查找总计数

来自DISCUSSION_COMMENT表格

SELECT COUNT(DISTINCT USER_ID) 
FROM DISCUSSION_COMMENT
WHERE DISCUSSION_COMMENT.DIS_ID=DISCUSSION.DIS_ID

其中DIS_ID是我在DISCUSSION_COMMENT中的外键。

3 个答案:

答案 0 :(得分:0)

你的问题不清楚。 似乎就像你需要加入一样:

SELECT COUNT(DISTINCT SCHEMA.USER_ID) 
FROM DISCUSSION_COMMENT
JOIN DISCUSSION ON DISCUSSION_COMMENT.DIS_ID=DISCUSSION.DIS_ID

在英语中,这将计算评论讨论的不同用户的数量。

如果您在外键列上具有参照完整性,则只需检查DIS_ID是否为空:

SELECT COUNT(DISTINCT SCHEMA.USER_ID) 
FROM DISCUSSION_COMMENT
WHERE DIS_ID IS NOT NULL

答案 1 :(得分:0)

我同意@Bohemian,我也建议你不要在MySQL查询中使用COUNT(),如果行数很大这会给服务器造成压力,你可以用native count()函数得到总结果PHP或编程语言中的同等编码。

答案 2 :(得分:0)

这是MySQL问题还是DB2问题?两者都被标记。

对于DB2,我建议使用聚合查询:

SELECT COUNT(dc.user_id), dc.dis_id
FROM discussion_comment dc, discussion d
GROUP BY dc.dis_id
HAVING dc.dis_id = d.dis_id