高手请告诉我:在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中怎样按照指定的字段去重?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server——如何指定日期格式

高手请进:IBM服务器存在EFI分区,Windows server 2008 R2激活问题

请高手帮我分析一下,我的SQL server 2005一打开就提示这个信息,我不知道怎么办

求高手能告诉我oracle数据库中两个相同的库,一个正式库,一个测试库,怎样把测试库的表和正式库连接起来

尝试更改 SQL Server IP 设置。配置管理器告诉我“指定的文件是只读的”[关闭]

sqlserver2005数据库中,修改行中某一列的值报错,怎样才能解决啊。