Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 跨多个非唯一列的唯一记录_Mysql_Sql - Fatal编程技术网

Mysql 跨多个非唯一列的唯一记录

Mysql 跨多个非唯一列的唯一记录,mysql,sql,Mysql,Sql,我有一个用户表(tbl),在同一日期有多个扫描,有些用户在多个日期有多个扫描 user date scan andy 20160301 T1 andy 20160301 T2 andy 20160301 T1 andy 20160401 T1 andy 20160401 T2 lee 20160401 T1 lee 20160401 T2 lee 20160701 T1 le

我有一个用户表(tbl),在同一日期有多个扫描,有些用户在多个日期有多个扫描

user    date        scan
andy    20160301    T1
andy    20160301    T2
andy    20160301    T1
andy    20160401    T1
andy    20160401    T2
lee     20160401    T1
lee     20160401    T2
lee     20160701    T1
lee     20160701    T2
lee     20160801    T1
lee     20160801    T2
tom     20160501    T1
tom     20160501    T2
tom     20160501    T2
我想要每个用户的唯一日期数(独立于每个日期发生的扫描次数),如下所示:

user    NumVisits
andy    2
lee     3
tom     1
我尝试过几种方法,但最接近的是这个简单的查询:

SELECT user, COUNT(*) NumVisits FROM tbl GROUP BY user HAVING NumVisits > 1;
这将产生:

user    NumVisits
andy    5
lee     6
tom     3
这个输出的问题是它解释了每个日期的多个扫描。有人能帮我弄清楚如何得到这个输出吗

user    NumVisits
andy    2
lee     3
tom     1
为此使用
Count(不同列)

SELECT
  user,
  COUNT(distinct date) NumVisits
FROM tbl GROUP BY user