我需要知道有多少用户回复了调查问卷。但他们可以回复一次或多次(在我的情况下,最多两次)。
所以我有两个表:fs_users
和fs_surveys
。
fs_users:
ID | Name
1 David
2 John
fs_surveys:
ID | ID_User | Selected_Answer
1 1 A
2 1 C
3 2 A
如果我在视觉上计算 响应调查的用户数量,我可以算2
(David和John)。通过查询,我可以知道这些人的回应是谁。像:
SELECT
fs_users.ID,
fs_users.Name
FROM fs_users
INNER JOIN fs_surveys
ON fs_surveys.ID_User = fs_users.ID
GROUP BY
fs_users.ID
它基本上会返回上面显示的fs_users
数据的相同内容。所以,直到这里我很好。问题是我需要COUNT()
有多少用户,而不是用户。
如果我只是将SELECT
更改为:
SELECT
COUNT(*)
...
我会收到这个:
result:
COUNT(*) | INSTEAD_OF
3 2
那么,我怎么能解决这个问题呢?再见!
答案 0 :(得分:6)
SELECT COUNT(DISTINCT ID_User) FROM fs_surveys
在sqlfiddle上查看。
答案 1 :(得分:4)
只需使用DISTINCT
:
SELECT COUNT(DISTINCT ID) FROM fs_users;
答案 2 :(得分:4)
使用COUNT(distinct columnName)
代替COUNT(*)
。
答案 3 :(得分:2)
只需使用COUNT(DISTINCT fs_users.ID)来计算唯一值。