高手请告诉我:在sql server中怎样按照指定的字段去重?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高手请告诉我:在sql server中怎样按照指定的字段去重?相关的知识,希望对你有一定的参考价值。
distinct只能根据整行数据进行筛选,有没有什么方法能根据字段筛选?
参考技术A select * from tb t where not exists(select 1 from tb where 重复字段=t.重复字段 and id<t.id)id是主键,也可以是不重复的时间等追问
我是鸟啊,能不能问一下这是什么查询?
追答通过子查询来查,你可以尝试把你的表结果,测试数据和你想要的结果贴出来
本回答被提问者采纳在远程服务器中运行 SQL Server 查询
【中文标题】在远程服务器中运行 SQL Server 查询【英文标题】:Running SQL Server query in Remote Server 【发布时间】:2021-07-16 03:00:51 【问题描述】:我有三个 SQL Server A、B 和 C。我正在尝试从 A 服务器运行类似 select @@servername
的相同查询,并从服务器 A 在 B 和 C 中运行相同的查询。我正在将结果加载到服务器中一张桌子。请告诉我如何完成这个。
【问题讨论】:
根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。 请展示您尝试的方法并解释它是如何不起作用的(在问题中不是 cmets)。 您的 3 个实例真的 2008、2008R2 和2012 吗?因此,其中 2 个完全不受支持,最后一个支持仅剩一年多。是时候整理一下升级路径了。 【参考方案1】:您可以使用链接服务器。
1- 在一个实例中
INSERT INTO [DatabaseName].[SchemaName].[TableName] (...) SELECT ... FROM [B].[DatabaseName].[SchemaName].[TableName];
INSERT INTO [DatabaseName].[SchemaName].[TableName] (...) SELECT ... FROM [C].[DatabaseName].[SchemaName].[TableName];
2- 在一个实例内(动态 SQL)
EXEC ('INSERT INTO [A].[DatabaseName].[SchemaName].[TableName] (...) SELECT ... FROM [DatabaseName].[SchemaName].[TableName]') AT [B];
EXEC ('INSERT INTO [A].[DatabaseName].[SchemaName].[TableName] (...) SELECT ... FROM [DatabaseName].[SchemaName].[TableName]') AT [C];
3- 在其他实例中
INSERT INTO [A].[DatabaseName].[SchemaName].[TableName] (...) SELECT ... FROM [DatabaseName].[SchemaName].[TableName];
【讨论】:
【参考方案2】:您可以使用 OPENQUERY
从两个远程服务器运行插入,这实际上是在远程服务器上本地运行 select 以便能够使用正确的本地索引等。
insert into localTableOnA (col1,col2,...)
select col1,col2,... from [dbname].dbo.[tablename] --on ServerA
insert into localTableOnA (col1,col2,...)
select col1,col2,... from openquery([ServerB],'select col1,col2,... from [dbname].dbo.[tablename]')
insert into localTableOnA (col1,col2,...)
select col1,col2,... from openquery([ServerC],'select col1,col2,... from [dbname].dbo.[tablename]')
【讨论】:
感谢您的回复。我在服务器 A 中有一个程序,我也必须在 B 和 C 中运行该程序。我在 B 和 C 中没有那个过程。我必须运行服务器 A 过程才能得到 B 和 C 的结果。需要做些什么来解决这个问题。 @Test 如果存储过程只存在于服务器A,那么它只能在那里运行。在该 SP 中,您可以如上所述查询服务器 B 或 C 上的表。以上是关于高手请告诉我:在sql server中怎样按照指定的字段去重?的主要内容,如果未能解决你的问题,请参考以下文章
高手请进:IBM服务器存在EFI分区,Windows server 2008 R2激活问题
请高手帮我分析一下,我的SQL server 2005一打开就提示这个信息,我不知道怎么办
求高手能告诉我oracle数据库中两个相同的库,一个正式库,一个测试库,怎样把测试库的表和正式库连接起来