每个用户名第一次出现时的Mysql更新列
我试图标记每个用户名每天出现的第一次。 我已经将所有相关人员标记为dupe=1。当天的第一个应设置为dupe=2 和外行的说法一样,如果当天第一次输入这个用户名,则标记column=2。每天都要做 基于这个问题,我可以这样做每个用户名第一次出现时的Mysql更新列,mysql,Mysql,我试图标记每个用户名每天出现的第一次。 我已经将所有相关人员标记为dupe=1。当天的第一个应设置为dupe=2 和外行的说法一样,如果当天第一次输入这个用户名,则标记column=2。每天都要做 基于这个问题,我可以这样做 Select * from ( select * from table WHERE dupe=1 order by date desc ) x group by date 它返回我要查找的每个副本的一个成员,但我想将其设置为=2。我很难将此作为更新语句
Select *
from (
select * from table WHERE dupe=1 order by date desc
) x
group by date
它返回我要查找的每个副本的一个成员,但我想将其设置为=2。我很难将此作为更新语句。或者这甚至可以作为更新语句使用?我只想设置第一个成员
我想要的结果是-
Select username, dupe where dupe!= 0;
Day 1
Bob - 2
Kathy - 2
Bob - 1
Kathy - 1
Kathy - 1
Day 2
Kathy - 2
Kathy - 1
Bob - 2
Kathy - 1
我试过的是
UPDATE table set dupeflag=2 from (
select * from
from (
select * from table WHERE dupeflag=1 order by date desc
) x
group by date
)
但是没有运气。可能是大错特错了我为此选择了一个新的旗帜专栏,另外还有一个好处,那就是帮助你回答其他问题 演示模式设置
create table table1
(
id int auto_increment primary key,
username varchar(30) not null,
`date` date not null,
dupeFlag int null, -- <---- New flag column, nullable, ignored on inserts below
firstFlag int null -- <-- was first dupe for day? 2=yes, ignored on inserts below
);
insert table1 (username,`date`) values ('john','2015-01-01');
insert table1 (username,`date`) values ('kim','2015-01-01');
insert table1 (username,`date`) values ('john','2015-01-01');
insert table1 (username,`date`) values ('john','2015-02-01');
insert table1 (username,`date`) values ('john','2015-03-01');
insert table1 (username,`date`) values ('john','2015-03-01');
insert table1 (username,`date`) values ('kim','2015-01-01');
insert table1 (username,`date`) values ('kim','2015-02-01');
update table1 t1
join
( select username,`date`,count(*) as theCount,min(id) as minForGroup
from table1
group by username,`date`
having theCount>1
) inr
on inr.username=t1.username and inr.`date`=t1.`date`
set dupeFlag=1,
firstFlag=if(id=inr.minForGroup,2,666);
select * from table1;
+----+----------+------------+----------+-----------+
| id | username | date | dupeFlag | firstFlag |
+----+----------+------------+----------+-----------+
| 1 | john | 2015-01-01 | 1 | 2 |
| 2 | kim | 2015-01-01 | 1 | 2 |
| 3 | john | 2015-01-01 | 1 | 666 |
| 4 | john | 2015-02-01 | NULL | NULL |
| 5 | john | 2015-03-01 | 1 | 2 |
| 6 | john | 2015-03-01 | 1 | 666 |
| 7 | kim | 2015-01-01 | 1 | 666 |
| 8 | kim | 2015-02-01 | NULL | NULL |
+----+----------+------------+----------+-----------+
8 rows in set (0.00 sec)