场景:表中包含有group_id,worker_id,status字段,查询这三个字段是否存在重复的数据。
成都地区优秀IDC服务器托管提供商(创新互联建站).为客户提供专业的遂宁联通机房,四川各地服务器托管,遂宁联通机房、多线服务器托管.托管咨询专线:18982081108
查找某个人在某个班组内存在多个status为0的数据
查找某个人在某个班组内存在多个status为0的数据,将最小的id选出来
查找某个人在某个班组内存在多个status为0的数据,将最小的id选出来,并设置status为1
将查询查询结果作为where in的条件,需要select的结果再通过一个中间表select多一次,否则会报You can't specify target table for update in FROM clause。
MySQL 过滤重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
from 树懒学堂- 一站式数据知识学习平台
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
使用 binlog-do-db=db_name。使用这个选项后,主服务器会判断当前的数据库(即USE选定的数据库)是否是db_name,如果是,则会将更新记录到二进制日志中。在使用之后,其它所有没有明显指定的数据库 都会被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。
在我服务器上有两个数据库,一个db_factory,另一个是db_user。在没有使用这个选项之前,对两个数据库的更新操作都是立即会复制到从库上的,但设置
[sql]
binlog-do-db=db_factory
之后,对db_user的改动,都不会被从库所复制。所以如果不是特别有需求,最好不要设置这个选项。当然如果是一个数据库经常更新,其它的都是一样的本地数据库,可以不用于二进制日志的后续操作的情况下,作为一种优化手段,也是可以的。
一个需要特别注意的地方是,如果设置binlog-do-db=db_factory。但后续使用如下语句:
[sql]
use db_user
insert into db_factory.employ ...........
此时,更新是不会被二进制日志所接收的。
二,binlog-ignore-db
表示忽略某个特定的数据库,而对其它数据库进行复制的选项。其实上面的选项是表示“忽略其他数据库,只记录我进入日志”,而这个选项可以表“忽略我,将其它数据库记录日志”,对这外选项的使用,可以如下所示:
[sql]
[mysqld]
binlog-ignore-db=db_factory
binlog-ignore-db=db_user
当然上面的binlog-do-db也可以使用多次记录多个表需要被写入二进制日志。
可以新建立一张表,
把重复数据的字段设置为索引,
不允许重复,再把之前的表数据导入到新建立的表中,
这样就可以过滤掉重复内容了。