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