Mysql 如何在sql中按天查找重复条目 1 在2个日期>代码> 12和13 < /代码>上重复,但需要在12自身上考虑。如果相同的使用ID被复制任何次数,但需要考虑为一个条目

Mysql 如何在sql中按天查找重复条目 1 在2个日期>代码> 12和13 < /代码>上重复,但需要在12自身上考虑。如果相同的使用ID被复制任何次数,但需要考虑为一个条目,mysql,Mysql,预料之外 查询必须打印 id | user_id | date ------------------------ 1 1 2017-09-12 2 1 2017-09-12 3 2 2017-09-12 4 1 2017-09-13 5 2 2017-09-15 6 3 2017-09-15 7 3

预料之外 查询必须打印

  id | user_id | date
------------------------
  1     1         2017-09-12
  2     1         2017-09-12
  3     2         2017-09-12
  4     1         2017-09-13
  5     2         2017-09-15
  6     3         2017-09-15
  7     3         2017-09-15
  8     4         2017-09-15
我的查询在以下情况下运行良好:

date     count
2017-09-12  2
2017-09-13  1 
2017-09-15  1 #3 duplicated one time
有没有这样的方式:

SELECT   a.date, count(*) 
FROM table_one a INNER JOIN user b on a.uid = b.id 
WHERE date(a.date) between current_date-3 and current_date  
    GROUP BY 1 HAVING count(*)>1 ORDER BY date

创建表格时使用
约束
,这样就不允许您输入重复数据:

SELECT date,count(*) (SELECT   a.date, count(*) 
  FROM table_one a INNER JOIN user b on a.uid = b.id 
  WHERE date(a.date) between current_date-3 and current_date  
  GROUP BY 1 HAVING count(*)>1 ORDER BY date)a) 
GROUP BY  date
))

了解有关约束的[详细信息][1]

您可以使用
DISTINCT
获得它,它将给出如下所示的唯一值

CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....

为什么2017-09-15的重复计数不为2,因为2017-09-12的
user_id
2也出现在
2017-09-15
上?你能解释一下
2017-09-15
的预期结果吗?为什么是1而不是3?是的,第12天的总计数是2(1和2),第15天(2和3)已经到了第12天,意思是说如果用户ID 1被复制了多少天,它将被视为1。15有2、3和4,那么计数不应该是3吗?第15天(只有3个被复制),2已经添加到日期12thI我想你的意思是
唯一的
?他不想阻止表中的重复,只是以某种混乱的方式计算它们。@Barmar正是!
SELECT DISTINCT user_id FROM table;

SELECT COUNT(DISTINCT user_id) FROM table; // this doesn't firefox and edge