SQL数据查询中如何从重复的结果中选取满文军 我需要你的!

如何使多台SQL服务器A,B,C的,相同名称,相同结构的表my_table的数据,按指定要求同步更新。
[问题点数:100分,结帖人myperry]
如何使多台SQL服务器A,B,C的,相同名称,相同结构的表my_table的数据,按指定要求同步更新。
[问题点数:100分,结帖人myperry]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年7月 MS-SQL Server大版内专家分月排行榜第三
2012年7月 MS-SQL Server大版内专家分月排行榜第三
2012年7月 MS-SQL Server大版内专家分月排行榜第三
2012年7月 MS-SQL Server大版内专家分月排行榜第三
2012年7月 MS-SQL Server大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。如何用SQL语句查询两张表中数据,我首先要得到第一张表数据然后在第二张表里得到数据明细。不产生重复数据_百度知道
如何用SQL语句查询两张表中数据,我首先要得到第一张表数据然后在第二张表里得到数据明细。不产生重复数据
我该怎么写?例如tabl沪互高就薨脚胳协供茅e1A企业B企业table2A企业多少员工B企业多少员工
提问者采纳
INNER JOIN 应该可以解决
能否写一条数据出来看看呢?
SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.ID=TABLE2.ID
你现在这条语句只能把两条表合并在一起,能不能再这两张表合并的情况下在里面找出自己想要的数据呢??也能否写条语句给我呢
WHETE 条件表达式
把这个加在最后即可
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
按默认排序
其他1条回答
两个表的结构?你就列出你要的结果没法弄,弄出来也不见得对
李四table2id
晕,没看懂。id和qym都相互关联吗?你要查每个企业的人数吗?
是的。。能不能写条语句咯。
那只用第一个表就好了select qym,count(*)
from table1 group by qym
sql语句的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&您可能感兴趣的文章
Copyright @
Inc. All rights reserved.
业务电话:400-680--& &技术服务:
& &客服QQ:0194011
公司地址: 南昌市青山湖区国威路刘堡公寓1栋2单元2楼(国威路与国康路交界处)& &
邮编: 330000
& & 网络实名: 百恒网络
为用户提供高质量的网络产品和优质的服务是我们始终追求的目标,谢谢您的支持,很高兴为您服务!南昌网络公司-百恒网络。提问回答都赚钱
> 问题详情
使用SELECT—SQL命令建立查询,要将查询结果输出到一临时数据表中,则选择使用()子句。A.INTO ARRAYB
悬赏:0&&答案豆&&&&提问人:匿名网友&&&&提问收益:0.00答案豆&&&&&&
使用SELECT—SQL命令建立查询,要将查询结果输出到一临时数据表中,则选择使用( )子句。A.INTO ARRAYB.INTO TABLEC.INTO CRRSORD.TO FILE请帮忙给出正确答案和分析,谢谢!
发布时间:&&截止时间:
网友回答&(共0条)
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&10.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&4.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&6.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
为你请到的专家
&&&&采纳率:76%&&&
&&采纳率:97%&&&
&&采纳率:88%&&&
&&&&采纳率:25%&&&
&&采纳率:90%&&&
[] [] [] [] [] [] [] [] [] [] [] []
请先输入下方的验证码查看最佳答案========第一篇=========
在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:
select data_guid from adam_entity_datas a where a.rowid & (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid)
如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高效率
select data_guid from adam_entity_datas where data_guid in (select data_guid from adam_entity_datas group by data_guid having count(*) & 1)
此方法查询出所有重复记录了,也就是说,只要是重复的就选出来,下面的语句也许更高效
select data_guid from adam_entity_datas where rowid in (select rid from (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m && 1)
目前只知道这三种比较有效的方法。
第一种方法比较好理解,但是最慢,第二种方法最快,但是选出来的记录是所有重复的记录,而不是一个重复记录的列表,第三种方法,我认为最好。
========第二篇=========
select usercode,count(*)&&&&&& from ptype&&&& group by usercode&&&& having count(*) &1&&
========第三篇=========
找出重复记录的ID:
select ID&&&&& from&&&&&&
(&&&&&&&& select ID ,count(*) as Cnt
from 要消除重复的表
group by ID
删除数据库中重复数据的几个方法&&
&&&&&&&&& 数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……&&&&
&&&&&&& 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
  select @max = @max -1
  set rowcount @max
  delete from 表名 where 主字段 = @id
  fetch cur_rows into @id,@max
  close cur_rows
  set rowcount 0&&
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。&&
1、对于第一种重复,比较容易解决,使用&&
&&&&& select distinct * from tableName&&
&&& 就可以得到无重复记录的结果集。&&
如果该表需要删除重复的记录,可以按以下方法删除&&
select distinct * into #Tmp from tableName&&
drop table tableName&&
select * into tableName from #Tmp&&
drop table #Tmp&&
2、这类重复问题通常要求保留重复记录中的第一条记录,*作方法如下&&
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集&&
 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&&&&
最后一个select即得到了Name,Address不重复的结果集&&
更改数据库中表的所属用户的两个方法&&
大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……&&&&
========第四篇=========
如何查询数据库中的重复记录?
比如说有个表中的数据是这样:
查询出的结果是:
记录&& 数量
a&&&&&&&&&& 3
b&&&&&&&&&& 2
c&&&&&&&&&& 1
怎样写这个SQL语句?
-----------------------
select distinct(name),count(*) from t
-------------------------------------
想出来了,这样就可以排序了。
select a1,count(a1)&& as total from tablename group by a1 order by total desc
--------------------------------------
select distinct(a1),count(a1) as total from tablename group by a1 order by total desc
加个distinct更有效率
--------------------------------------------------------------
select p.*, m.* from table1 p left join table2 m on p.item1=m.item2 where p.item3='#$#@%$@' order by p.item3 asc limit 10
就类似这么写
========第五篇=========
如何查找数据库中的重复记录? 能在Access中用的方法
----------------------------------------------------------------------
from 表 A inner join (select 字段1,字段2 from 表 group by 字段1,字段2 having Count(*)&1) B on A.字段1=B.字段1 and A.字段2=B.字段2
--------------------------------------------------------
根据其中几个字段判断重复,只保留一条记录,但是要显示全部字段,怎么查询,谢谢!!
字段1 字段2 字段3 字段4
a&&&&& b&&&&& c&&&&&& 1
a&&&&& b&&&&& c&&&&&& 1
a&&&&& b&&&&& d&&&&&& 2
a&&&&& b&&&&& d&&&&&& 3
b&&&&& b&&&&& d&&&&&& 2
想得到的结果为
a&&&&& b&&&&& c&&&&&& 1
a&&&&& b&&&&& d&&&&&& 2(或者3)
b&&&&& b&&&&& d&&&&&& 2
说明,根据字段1,2,3组合不重复,字段4 不考虑,得到了3个记录
但是也要显示字段4。
方法一:&&
可以用临时表的方法来解决:
CurrentProject.Connection.Execute &drop table temptable&
CurrentProject.Connection.Execute &select * into temptable from 表2 where 1=2&
CurrentProject.Connection.Execute &insert into temptable(字段1,字段2,字段3) SELECT DISTINCT 表2.字段1, 表2.字段2, 表2.字段3 FROM 表2;&
CurrentProject.Connection.Execute &UPDATE temptable INNER JOIN 表2 ON (表2.字段1 = temptable.字段1) AND (表2.字段2 = temptable.字段2) AND (表2.字段3 = temptable.字段3) SET temptable.字段4 = [表2].[字段4];&
可以直接使用一个SELECT查询筛选出需要的数据:
可以假定第四字段都选值最小的
SELECT [1],[2], [3], Min([4]) AS Min4
GROUP BY 表1.[1], 表1.[2], 表1.[3];
id&& NAME&& r1&&& r2
1&&& 1&&&&& w&&&& ee
1&&& 1&&&&& 1&&&& 1232
1&&& 2&&&&& 123&& 123
1&&& 2&&&&& 12&&& 434
1&&& 2&&&&& 123&& 123
2&&& 1&&&&& 123&& 123
ID 为数值,NAME 为字符。每条记录没有唯一标识。
要求取得 ID 和 NAME 合并后不重复的记录,如有重复保留其中一条即可,但要显示所有记录。
SELECT a.*, (select top 1 r1 from 表2 as a1 where a1.id=a.id and a1.name=a.name) AS r1, (select top 1 r2 from 表2 as a2 where a2.id=a.id and a2.name=a.name) AS r2
FROM [SELECT DISTINCT 表2.id, 表2.NAME
FROM 表2]. AS
SELECT a.*, dlookup(&r1&,&表2&,&id=& & a.id&& & & and name='&& a.name & &'&) AS r1, dlookup(&r2&,&表2&,&id=& & a.id&& & & and name='&& a.name & &'&) AS r2
FROM [SELECT DISTINCT 表2.id, 表2.NAME
FROM 表2]. AS
注意,上述代码中由于没有唯一标识列,因此显示的 R1 R2 的先后次序无从确定,一般是按输入的先后顺序,但是微软没有官方资料说明到底按哪个顺序,请网友注意。
请注意,上述表2为没有唯一标识字段,如果现在再建立一个自动编号字段“主键”则可以用以下代码
SELECT a.ID, a.name, b.r1, b.r2, b.主键
FROM (SELECT 表2.id, 表2.NAME, Min(表2.主键) AS 主键
GROUP BY 表2.id, 表2.NAME) AS a inner JOIN 表2 AS b ON a.主键=b.主键;
========第六篇=========
1.查询数据库中重复的记录:
select realname,count(*) from users group by realname having count(*)&1
========第七篇=========
SELECT T0.ItemCode, T0.ItemName FROM OITM T0 WHERE exists (select 1 from OITM A where A.CODEBARS = TO.CODEBARS And A.ItemCode & & TO.ItemCode)
========第八篇=========
相信很多人在查询数据库时都会碰到检索某表中不重复记录的时候,提到检索不重复记录,马上想到的肯定是Distinct或者Group By分组,
小弟在初次使用的时候碰到了一些麻烦,这里拿出来与大家分享,希望对更多的朋友有所帮助!
&&& 先看看数据库表结构:
&&&&&&& 表名: TEST 字段: Id,A,B,C,D
&&&&&&& 其中B字段包含重复值;
&sfsf sscv
下面我们来看看用什么样的SQL语句检索出不含重复记录的数据:
使用Distinct关键字
&&& Distinct关键字主要用来在SELECT查询记录中根据某指定字段的值去除重复记录
&&& SELECT DISTINCT [字段名] FROM [表名] WHERE [检索条件字句]
&&& 所以用这样一句SQL就可以去掉重复项了:
[color=]SELECT DISTINCT (B) FROM TEST
&&& 这里有一个非常非常需要注意的地方:
&&& SELECT DISTINCT [字段名]后面不能再跟其他的字段,否则检索出来的记录仍然会含有重复项;
&&&&& 错误写法:
&&&&&&&&&&& SELECT DISTINCT [字段名] ,[其他字段名] FROM [表名] WHERE [检索条件字句]
&&& 实际上,我们上面SQL语句结果集里就只有B字段;(一般情况下,这种结果应该是很难满足需求的)
&&& 如果我们的记录集里还需要有其他字段值,那怎么办呢?
实际上,我们完全可以用另一种办法来解决问题;只是需要用到子查询而已!
使用GROUP BY 分组
&&& 有一点需要注意:
&&&&&& 使用带有GROUP BY字句的查询语句时,在SELECT列表指定的列要么是GROUP BY 指定的列,要么包含聚合组函数
&&& 所以用这样一句SQL就可以去掉重复项了:
[color=]SELECT * FROM TEST WHERE id in (SELECT MIN(id) FROM TEST GROUP BY B)
&&& 这样就得到我们想要的结果集了:
&sfsf sscv
========第九篇======mysql===
----------------------------------------------------------------------
我的mysql表中的帐号是8位的随机数,我现在想查帐号有没有重复的,应该怎样操作,
----------------------------------------------------------------------
select count(*) as num,帐号 from TABLE GROUP BY 帐号
num & 1 就有重复!
========第十篇====(着急的人直接看红字)=====
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。
下面先来看看例子:
&&&& table
&& id name
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:
select distinct name, id from table
&& id name
distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。
我们再改改查询语句:
select id, distinct name from table
很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。
很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。
拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。
试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。
报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。
再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。
终于搞定了,不过这样一来,又必须要求客户也升级了。
突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?
赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。
现在将完整语句放出:
select *, count(distinct name) from table group by name
&& id name count(distinct name)
最后一项是多余的,不用管就行了,目的达到。。。。。
唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧(对了,还有容容那家伙),现在拿出来希望大家不要被这问题折腾。
哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,发给容容放网站上去,我继续忙碌。。。。。。
-----------------------------------------------------------------------------------------
更郁闷的事情发生了,在准备提交时容容发现,有更简单的解决方法。。。。。。
select id, name from table group by name
select * from table group by name
========第十一篇=========
查询及删除重复记录的方法
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) & 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
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、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) & 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) & 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) & 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&1)
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) & 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) & 1
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
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
close cur_rows
set rowcount 0
  方法二
  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
  就可以得到无重复记录的结果集。
  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
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子句中省去此列)
select * from tablename where id in (
select id from tablename
group by id
having count(id) & 1
本文来自CSDN博客,转载请标明出处:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:272780次
积分:4635
积分:4635
排名:第2189名
原创:167篇
转载:148篇
评论:60条
(3)(6)(4)(3)(1)(6)(4)(2)(2)(1)(4)(2)(1)(3)(3)(1)(2)(4)(1)(2)(4)(3)(1)(1)(10)(6)(3)(6)(11)(12)(7)(7)(4)(8)(8)(9)(9)(24)(4)(1)(5)(2)(2)(2)(7)(12)(24)(27)(9)(6)(10)(16)

我要回帖

更多关于 满文军 我需要你 的文章

 

随机推荐