GVKun编程网logo

重复中的SQL重复(重复中的sql重复数据)

24

对于想了解重复中的SQL重复的读者,本文将是一篇不可错过的文章,我们将详细介绍重复中的sql重复数据,并且为您提供关于Jekyll重复gem错误但文件中没有重复?、Mysql入门SQL重复记录查询查询

对于想了解重复中的SQL重复的读者,本文将是一篇不可错过的文章,我们将详细介绍重复中的sql重复数据,并且为您提供关于Jekyll重复gem错误但文件中没有重复?、Mysql入门SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法、mysql删除重复记录的sql语句与查询重复记录(1/4)、Mysql应用删除MySQL重复数据的方法的有价值信息。

本文目录一览:

重复中的SQL重复(重复中的sql重复数据)

重复中的SQL重复(重复中的sql重复数据)

我正在尝试创建一个查询,该查询将为我提供oID为1且dID不唯一且stringA或stringB不唯一的所有行。

我的解释是did> 1的计数和stringAstringB的计数都大于1。

你想要的:

select t.*
from (select t.*,count(*) over (partition by oid,did) as num_did,stringA) as num_stringA,stringB) as num_stringB
      from table1 t
      where oid = 1
     ) t
where num_did > 1 and
      (num_stringA > 1 or num_stringB > 1);
,

由于没有迹象表明您关心存在多少个“重复项”,因此至少可以使用1个“重复项”来使用EXISTS。所以:

select * 
  from some_duplicates sd1 
 where oid = 1
   and (   sd1.StringA is not null
        or sd1.StringB is not null
       )
   and exists 
       ( select null 
           from some_duplicates sd2 
          where sd2.oid = sd1.oid
            and sd2.id != sd1.id
            and sd2.did = sd1.did
            and (   sd2.StringA is not null
                 or sd2.StringB is not null
                )
            and (   (sd2.StringA is not distinct from sd1.StringA)
                 or (sd2.StringB is not distinct from sd1.StringB) 
                )
       );

请参见fiddle here。

,

我找到了目前可行的解决方案。

SELECT *
FROM t
WHERE(
        ((stringA in(select stringA from t WHERE dID is NOT NULL and oID = 5 group by stringA,dID having count(id) > 1)) OR
        (stringB in(select stringB from t WHERE dID IS NOT NULL and oID = 5 group by stringB,dID having count(id) > 1))) AND
        (dID in(select dID from t WHERE dID is NOT NULL and oID = 5 group by dID having count(id) > 1))
)

Jekyll重复gem错误但文件中没有重复?

Jekyll重复gem错误但文件中没有重复?

如何解决Jekyll重复gem错误但文件中没有重复??

我正在尝试使用 Jekyll 主题,但是当我运行 bundle install 时,我得到以下内容

Your Gemfile lists the gem jekyll-shell-theme (>= 0) more than once.
You should probably keep only one of them.
Remove any duplicate entries and specify the gem only once.
While it''s not a problem Now,it Could cause errors if you change the version of one of them later.

[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice coming from different sources.
You specified that jekyll-shell-theme (>= 0) should come from source at `.` and
. Bundler cannot continue.

 #  from C:/Users/jerbin/Projects/jordan-tc.github.io/Gemfile:8
 #  -------------------------------------------
 #    gem ''jemoji''
 >  end
 #  # frozen_string_literal: true
 #  -------------------------------------------

Gemfile 在下面,没有重复,所以我很困惑。我该如何解决这个问题?

# frozen_string_literal: true

source "https://rubygems.org"
gemspec

# Including GitHub Pages gem
gem "github-pages",group: :jekyll_plugins
gem "jekyll-shell-theme"

# Plugins used by the theme
group :jekyll_plugins do
  gem ''jemoji''
end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Mysql入门SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

Mysql入门SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

《MysqL入门sql重复记录查询 查询多个字段、多表查询、删除重复记录的方法》要点:
本文介绍了MysqL入门sql重复记录查询 查询多个字段、多表查询、删除重复记录的方法,希望对您有用。如果有疑问,可以联系我们。

sql重复记录查询MysqL教程

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 
MysqL教程

select * from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 

例二: 
MysqL教程

select * from testtable 
where numeber in (select number from people group by number having count(number) > 1 ) 

可以查出testtable表中number相同的记录  
MysqL教程

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 
MysqL教程

delete from people  
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 

3、查找表中多余的重复记录(多个字段)  
MysqL教程

select * from vitae a 
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 
MysqL教程

delete from vitae a 
where (a.peopleId,seq having count(*) > 1) 
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 
MysqL教程

select * from vitae a 
where (a.peopleId,seq having count(*)>1) 

(二) MysqL教程

比方说 MysqL教程

在A表中存在一个字段“name”, MysqL教程

而且不同记录之间的“name”值有可能会相同, MysqL教程

现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; 
MysqL教程

Select Name,Count(*) From A Group By Name Having Count(*) > 1 

如果还查性别也相同大则如下: 
MysqL教程

Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 

(三) MysqL教程

办法一 MysqL教程

declare @max integer,@id integer 
 
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1 
 
open cur_rows 
 
fetch cur_rows into @id,@max 
 
while @@fetch_status=0 
 
begin 
 
select @max = @max -1 
 
set rowcount @max 
 
delete from 表名 where 主字段 = @id 
 
fetch cur_rows into @id,@max 
 
end 
 
close cur_rows 
 
set rowcount 0 

办法二  
MysqL教程

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略.  
MysqL教程

1、对于第一种重复,比较容易解决,使用 
MysqL教程

select distinct * from tableName 

就可以得到无重复记录的结果集.  
MysqL教程

如果该表需要删除重复的记录(重复记录保留1条),可以按以下办法删除 
MysqL教程

select distinct * into #Tmp from tableName 
 
drop table tableName 
 
select * into tableName from #Tmp 
 
drop table #Tmp 

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决.  
MysqL教程

2、这类重复问题通常要求保留重复记录中的第一条记录,操作办法如下  
MysqL教程

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集 
MysqL教程

select identity(int,1,1) as autoID,* into #Tmp from tableName 
 
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID 
 
select * from #Tmp where autoID in(select autoID from #tmp2) 

最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)  
MysqL教程

(四)  
MysqL教程

查询重复 
MysqL教程

select * from tablename where id in ( 
 
select id from tablename  
 
group by id  
 
having count(id) > 1 
 
) 

以上就是小编为大家带来的sql重复记录查询 查询多个字段、多表查询、删除重复记录的办法的全部内容了,希望对大家有所帮助,多多支持小编PHP~MysqL教程

欢迎参与《MysqL入门sql重复记录查询 查询多个字段、多表查询、删除重复记录的方法》讨论,分享您的想法,小编 jb51.cc为您提供专业教程。

mysql删除重复记录的sql语句与查询重复记录(1/4)

mysql删除重复记录的sql语句与查询重复记录(1/4)

Mysql应用删除MySQL重复数据的方法

Mysql应用删除MySQL重复数据的方法

《MysqL应用删除MysqL重复数据的方法》要点:
本文介绍了MysqL应用删除MysqL重复数据的方法,希望对您有用。如果有疑问,可以联系我们。

本文实例讲述了删除MysqL重复数据的办法.分享给大家供大家参考.具体办法如下:MysqL应用

项目背景MysqL应用

在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据.因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然而,数据库中存入了多个数据.对于如何造成了这个结果,一时没有想清楚,但为了办理入库慢的问题,首先要删除冗余数据.MysqL应用

问题描述MysqL应用

数据库的表结构很简单,如下:
MysqL应用

代码如下:
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| id             | varchar(255) | NO   | PRI | NULL    |       |
| conf_id        | varchar(255) | NO   | MUL | NULL    |       |
| insert_time    | datetime     | YES  |     | NULL    |       |
| cpu_usage      | float(11,2)  | YES  |     | NULL    |       |
| memory_usage   | float(11,2)  | YES  |     | NULL    |       |
| io_usage_write | float(11,2)  | YES  |     | NULL    |       |
| io_usage_read  | float(11,2)  | YES  |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+

查询所有数据量
代码如下:
select count(*) from perf_linux;

输出 427366

查询所有时间点不同设备的数据量
MysqL应用

代码如下:
select count(distinct conf_id,insert_time) from perf_linux ;

输出42387

由上面的数据可以看出,数据冗余了10倍左右.MysqL应用

再按时间分组看一下:
MysqL应用

代码如下:
select id,conf_id,insert_time from perf_linux order by insert_time,conf_id;

输出:
代码如下:
| 2a79f7cd-43a9-4c7b-adb2-316b6c04283e | 1       | 2014-12-09 15:09:14 |
| 50d6f6c2-9c8b-45fd-98fd-2be211221cfd | 1       | 2014-12-09 15:09:14 |
| 740b52e1-e868-4074-ba36-74e2634401b3 | 1       | 2014-12-09 15:09:14 |
| 8b0096a4-9e85-417b-a131-e3505ca79a9c | 1       | 2014-12-09 15:09:14 |
| 90a9e882-5220-4508-a56f-8d4ab4a7929b | 1       | 2014-12-09 15:09:14 |
| d17403ed-24a4-45e8-b51b-2a95118383d9 | 1       | 2014-12-09 15:09:14 |
| 0c2da917-579b-4080-857d-7159f38b44ac | 2       | 2014-12-09 15:09:14 |
| 263083eb-8f63-4d2b-a03f-3320aa678735 | 2       | 2014-12-09 15:09:14 |
| d6c57a38-080b-465a-a55a-beafd9daf32d | 2       | 2014-12-09 15:09:14 |
| f672227b-1fb8-4b85-880d-2cc34b02880d | 2       | 2014-12-09 15:09:14 |
| f80020fe-6cb5-48ec-beb0-4e8ebeb0ca57 | 2       | 2014-12-09 15:09:14 |
| ff633a35-824d-49ba-b78c-5bcc5df8d1cc | 2       | 2014-12-09 15:09:14 |
| 5c41e48a-abfc-4108-a00e-ca7def7d5a5a | 3       | 2014-12-09 15:09:14 |
| 60b7ab9e-c91a-4020-a6d3-7bceb1dc47c5 | 3       | 2014-12-09 15:09:14 |
| 7b6cd2b8-ac6d-43eb-8858-e15885e676c8 | 3       | 2014-12-09 15:09:14 |
| d53a3df5-08c4-4604-8fac-cb51077935f6 | 3       | 2014-12-09 15:09:14 |
| d9e4ba14-f98d-42a8-b3bc-2879d58aa797 | 3       | 2014-12-09 15:09:14 |
| f56f82f6-32a7-47f7-ae07-b13168743884 | 3       | 2014-12-09 15:09:14 |
| 076c4c1b-0028-4a9c-a8c4-de655bd6ab6b | 4       | 2014-12-09 15:09:14 |
| 2a90ad9e-11a5-4707-95e8-78491da658ad | 4       | 2014-12-09 15:09:14 |
| 3b17ad1d-e589-4b65-93a7-d61fc99b4071 | 4       | 2014-12-09 15:09:14 |
| 6988d6cf-44ef-47f7-808d-09791caf2d90 | 4       | 2014-12-09 15:09:14 |
| 8404d281-f9e5-4153-a47e-128c05386758 | 4       | 2014-12-09 15:09:14 |
| e042e310-7ff2-4e4d-8c98-71e3e4d57828 | 4       | 2014-12-09 15:09:14 |
+--------------------------------------+---------+---------------------+
由上图可见,同一个时间点的同一个设备的数据有冗余,现在我们要把这些冗余数据去掉.

解决办法MysqL应用

思路是这样的:首先应该依照conf_id和时间点来判断,进行分组(group by)查询,每组中再取一个就可以.分组是很简单,但是分组怎么取一个呢?我采用了中间表的形式.MysqL应用

创建中间表,并把数据导入中间表
MysqL应用

代码如下:
create table perf_linux_t like perf_linux;
insert into perf_linux_t select * from perf_linux;
在中间表中增加一个字段,此字段是自增长的.
代码如下:
ALTER TABLE `perf_linux_t`
ADD COLUMN `auto_id` INT NOT NULL AUTO_INCREMENT,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`auto_id`);
删除无用数据

先查询一下
MysqL应用

代码如下:
select min(auto_id) as auto_id from perf_linux_t group by insert_time ;
删除不对的数据
代码如下:
delete  from perf_linux_t where auto_id not in (select min(auto_id) as auto_id from perf_linux_t group by insert_time);
慢着,输出错误:

You can't specify target table 'perf_linux_t' for update in FROM clauseMysqL应用

不能删除啊,那只能再建一个中间表了.MysqL应用

再建中间表
MysqL应用

代码如下:
create table tmp like perf_linux_t;
转变思路,不删除不符合的数据,而是把符合的数据存到这张新表中.
代码如下:
insert into tmp select * from perf_linux_t where auto_id in (select min(auto_id) as auto_id from perf_linux_t group by insert_time,conf_id );
把这张表中的无用列删除
代码如下:
ALTER TABLE `tmp`
DROP COLUMN `auto_id`,
DROP PRIMARY KEY;
导回数据

删除原来的数据
MysqL应用

代码如下:
truncate table perf_linux;
插入数据
代码如下:
insert into perf_linux select * from tmp;
删除中间表
代码如下:
drop table tmp;
drop table perf_linux_t;
总结

通过这个办法,数据变为了42387条,删除了冗余的数据.但实际上程序的问题并没有完全定位,还需要观察才能定位问题.MysqL应用

希望本文所述对大家的MysqL数据库程序设计有所赞助.MysqL应用

《MysqL应用删除MysqL重复数据的方法》是否对您有启发,欢迎查看更多与《MysqL应用删除MysqL重复数据的方法》相关教程,学精学透。小编PHP学院为您提供精彩教程。

关于重复中的SQL重复重复中的sql重复数据的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Jekyll重复gem错误但文件中没有重复?、Mysql入门SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法、mysql删除重复记录的sql语句与查询重复记录(1/4)、Mysql应用删除MySQL重复数据的方法等相关知识的信息别忘了在本站进行查找喔。

本文标签: