2

我需要知道有多少用户回复了调查。但是他们可以响应一次或多次(在我的情况下,最多两次)。

所以我有两张桌子:fs_usersfs_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(大卫和约翰)。通过查询,我可以知道这些响应的民族是谁。喜欢:

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

那么,我该如何解决这个问题呢?再见!

4

4 回答 4

6
SELECT COUNT(DISTINCT ID_User) FROM fs_surveys

sqlfiddle上查看。

于 2012-08-30T14:22:16.420 回答
4

使用COUNT(distinct columnName)而不是COUNT(*).

于 2012-08-30T14:23:32.000 回答
4

只需使用DISTINCT

SELECT COUNT(DISTINCT ID) FROM fs_users;
于 2012-08-30T14:23:05.873 回答
2

只需使用COUNT(DISTINCT fs_users.ID)来计算唯一值。

于 2012-08-30T14:25:41.390 回答