Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cột cập nhật Mysql về lần xuất hiện đầu tiên của mỗi tên người dùng

Tôi đã sử dụng một cột cờ mới cho việc này, cộng với lợi ích của việc trợ giúp câu hỏi khác của bạn tại đây .

Thiết lập giản đồ demo

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');

cập nhật tuyên bố , đặt lừa đảo đầu tiên trong ngày dựa trên id PK

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)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các truy vấn mysql động với sql thoát có an toàn như các câu lệnh đã chuẩn bị không?

  2. Gặp lỗi khi cố gắng Điền vào menu thả xuống HTML bằng dữ liệu Mysql trong Java?

  3. Lỗi cú pháp JpaRepository SQL khi cố gắng lưu vào MySQL Date

  4. Làm cách nào để tổ chức một loạt các bảng mysql?

  5. Python MySQL - CHỌN hoạt động nhưng không XÓA?