`
ronon
  • 浏览: 193816 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

SQLServer 表连接时使用top 1 去除重复数据

阅读更多

left join SM_SOLine soline on soline.SO=so.ID and soline.DocLineNo=(select MAX(DocLineNo) from SM_SOLine where so=so.ID)

 

 

 

create table #test8
(
  id int,
  name varchar(50)
)

drop table #test9
create table #test9
(
  id int,
  name varchar(50)
)

insert into #test8
select 1,'aaa' union all
select 2,'bbb' union all
select 3,'ccc' union all
select 4,'ddd' 


insert into #test9
select 3,'abc' union all
select 3,'ddd' union all
select 3,'eee' union all
select 3,'eee' union all
select 2,'ccc' union all
select 1,'ghd' union all
select 7,'hgd' 

 

select A.id,A.name,B.name from #test8 A
inner join #test9 B on A.ID=B.ID
where not exists(select 1 from #test9 where id=B.id and name>B.name)

此处B表的Name字段必须是在B表中不重复的某字段,不然,会出现重复结果

 

 

 

 

 

 

use TestDB
drop table test8
create table test8
(
      id int,
      name1 varchar(50),
      name2 varchar(50),
      name3 varchar(50)
)

 

drop table test9
create table test9
(
      id int,
      name1 varchar(50),
      name2 varchar(50),
      name3 varchar(50)

)

insert into test8 --ItemMaster
select  1,'a','aaa','111' union all
select  2,'b','bbb','222' union all
select  3,'c','ccc','333' union all
select  4,'d','ddd','444' union all
select  5,'e','eee','555' union all
select  6,'f','fff','666' union all
select  7,'g','ggg','777' union all
select  8,'h','hhh','888'

 

insert into test9 --Gprice
select  1,'a','aaa','567' union all
select  2,'a','aaa','567' union all
select  3,'i','ccc','641' union all
select  4,'c','ccc','981' union all
select  5,'e','eee','126' union all
select  6,'f','fff','873' union all
select  7,'c','ccc','946' union all
select  8,'h','ddd','767'


--insert into test9 --Gprice
--select  1,'a','aaa','A' union all
--select  2,'a','aaa','A' union all
--select  3,'i','ccc','B' union all
--select  4,'c','ccc','C' union all
--select  5,'e','eee','D' union all
--select  6,'f','fff','E' union all
--select  7,'c','ccc','F' union all
--select  8,'h','ddd','G'

/*
  1,a  --
  3,c  --
  5,e
  6,f
*/

此写法会导致test8中的ID重复

select A.id,A.name1,A.name3,B.name2,B.name3 B_name3 from test8 A
inner join test9 B on A.name1=B.name1 and A.name2=B.name2

 使用此方法可以解决问题:

select A.id,A.name1,A.name3,B.name2,MAX(B.name3) B_name3  
from test8 A
inner join test9 B on A.name1=B.name1 and A.name2=B.name2
where not exists(select 1 from test9 where id=B.id and name3>B.name3)
group by A.id,A.name1,A.name3,B.name2

 

PS. B表里的name3可以是test8表里的除关键字段以外任意一个前提是有值的字段,

      可以是整型,也可是字符串,都可显示正常,如下列结果

 


 

 

分享到:
评论

相关推荐

    SQl server练习50题

    5. 自连接:一个表自身与其他表的连接,常用于处理层次结构数据或查找相同类型但不同记录的数据。 三、其他高级查询技术 除了基础和多表查询,SQL Server还提供了更复杂的查询技巧: 1. 子查询:在主查询内部嵌套...

    如何使用SQLServer表中数据操作.pptx

    本章主要涵盖了如何在SQL Server管理控制台中执行这些基本操作,包括查询、插入、更新和删除数据。以下是对这些知识点的详细阐述: 首先,操作表中的数据通常通过SQL Server Management Studio (SSMS)进行,这是一...

    Microsoft SQL Server常用命令_pdf

    - **应用场景**: 当需要合并两个表中的记录,并且希望保留所有的重复数据时使用。 #### 十、数据定义语言 **10.1 创建数据库和表** - **语法**: ```sql CREATE DATABASE db1; CREATE TABLE tab1 ( col1 int NOT ...

    SQLServer数据库优化之50种方法

    在IT领域,特别是对于数据库管理与优化方面,SQL Server作为一款广泛使用的数据库管理系统,其性能优化一直是DBA(数据库管理员)和技术团队关注的重点。本文将根据给定的信息,详细阐述部分重要的SQL Server数据库...

    SQLSERVER命令大全

    可以使用SELECT语句来选择一个或多个列,过滤特定行,排序结果,甚至连接多个表以获取所需的数据。例如,`SELECT * FROM Employees WHERE Department='Sales'` 将返回所有销售部门员工的信息。 - INSERT:用于向...

    SQL Server笔试题(Sql2000常见笔试题)

    这些题目涵盖了SQL Server的基础操作,包括数据操作、表的管理、索引、事务处理、查询和聚合函数的使用,是理解SQL Server数据库管理和编程的重要知识点。通过解决这些问题,可以深入理解SQL Server的工作原理和操作...

    SQLServer常用关键字、数据类型和常用语法.doc

    SQL Server是一种广泛使用的关系型数据库管理系统,其语法和数据类型对于任何想要操作和管理数据库的IT专业人员来说都是至关重要的。以下是对SQL Server常用关键字、数据类型和常用语法的详细说明: 1. **主要...

    SQL Server 2005入门

    例如,使用TOP关键字可以实现只查询表中的前N条记录,使用GROUP BY和HAVING可以实现数据的分组统计,而嵌套查询、集合查询和连接查询则是实现复杂查询的主要方法。 总之,SQL Server 2005入门级知识点繁多,但主要...

    《SQL Server数据库》模拟试卷八

    1. SQL Server 2000 特点:SQL Server 2000 是一个多进程、多线程的数据库系统,采用Client/Server设计结构,支持分布式数据库。选项B错误,它不是单进程数据库。 2. SQL Server 系统数据库:master、tempdb 和 ...

    Microsoft SQL Server 2008技术内幕笔记

    【Microsoft SQL Server 2008 技术内幕笔记】主要涵盖了T-SQL查询的执行顺序和语言基础,包括逻辑查询处理的各个阶段以及关系模型的基础概念。 在T-SQL查询中,逻辑查询处理分为以下几个阶段: 1. **From阶段**: ...

    SQLserver使用手册

    根据提供的文件信息,我们可以深入探讨SQL Server中的几个关键知识点,特别是如何使用SQL查询来筛选数据。以下是对这些知识点的详细解析: ### SQL Server查询基础 #### 显示介于 "Adams"(包括)和 "Carter"(不...

    sqlserver 知识点列表.pdf

    SQL Server 是一种流行的数据库管理系统,广泛应用于数据存储和管理。以下是一些关于SQL Server的关键知识点的详细解释: 一、身份验证: SQL Server 提供两种身份验证模式:Windows身份验证和Windows与SQL Server...

    SQL Server学习总结.docx

    - **步骤1**:启动SQL Server Management Studio并连接到数据库引擎。 - **步骤2**:进入还原流程,可通过右键点击“数据库”下的“还原数据库”选项开始。 - **步骤3**:选择备份文件的路径。通常可以通过浏览来...

    sqlserver利用存储过程去除重复行的sql语句

    总之,这个存储过程展示了如何在SQL Server中有效地管理和删除重复数据,同时实现了分页查询,这些都是数据库操作中的常见需求。需要注意的是,实际应用中应考虑性能优化和安全措施,例如使用参数化查询以防止SQL...

    sqlserver复习题二.pdf

    这些知识点涵盖了数据库设计、SQL 查询语法、数据类型、表连接、聚合函数、更新和删除数据等方面,是 SQL Server 数据库操作的基础内容。理解并熟练掌握这些概念对于数据库管理和开发至关重要。

    SqlServer2008--学习笔记

    SqlServer2008学习笔记中主要涉及到数据库的基本操作,包括创建、删除以及修改数据库的操作方法,同时也详细介绍了T-SQL语句中数据表的常用术语、系统数据库的相关知识以及T-SQL语句在数据表上的应用,如增加、删除...

    SQL SERVER

    在SQL Server中,当两个表进行连接时,如果未指定任何连接条件,则会产生笛卡尔积(Cartesian Product),即第一个表的每一行都会与第二个表的所有行进行配对。 **示例**: ```sql SELECT student.*, sc.* FROM ...

    SQL Server数据库实验指导书 实验教程 数据库实验03 单表查询.pdf

    本实验主要围绕SQL Server 2005数据库的管理和单表查询操作展开,旨在帮助学习者熟练掌握SQL Server的相关技能。实验内容分为两大部分:SQL Server的安装与配置以及单表查询。 首先,实验涉及SQL Server 2005的安装...

    sqlServer2005习题与答案

    SQL Server 2005 是一个关系型数据库管理系统,提供了丰富的功能用于数据管理和查询。以下是一些基于给定习题的SQL知识点: 1. **查询基础**:`SELECT`语句用于从表中检索数据,`*`表示选择所有列。例如,`SELECT *...

Global site tag (gtag.js) - Google Analytics