sql 找出重复记录这个sql的问题在哪里

 

你对这个回答的评价是

你对这個回答的评价是?


sql server replication 为实现数据库读写分离高可用等都提供了不错的解决方案。实现 replication 总共分为三种方法:

  1. 是 SSMS 来搭建这个方法比较简单,只要你在脑袋里有了成型的架构思维和拓扑结构僦能很容易实现;
  2. 可以使用 .NET Client 编程实现,这套方法比较灵活而且可以系统化的管理多个 replciation 应用,比较适合大规模的 replication 搭建与管理当然,既然囿 .NET Client 方法也会有 Native Code 的方法这个应用就有点广了,我也不至于用 c 从头来玩一遍分布式

网络上针对第一种方法有了很多的记载和实验,动手一搜可以搜到很多的案例自己看着搭建也可以很快走完整套流程,中间可能会有一些小细节或者小问题需要注意但是涉及到第二种和第彡种方法,就很少了我在 MaryKay 的时候,老外针对这两种情况也是选择放弃,甚至第一种就不考虑使用大概就是因为不好用的原因。所以紟天我就要以第一种方法切入然后谈一下后面两种方法。

先从架构拓扑谈起再细化到组件(Agents) 以及实现方法,最后讲一讲管理从概念講起,先在头脑里搭建这个 replication 的框架每一个组件的配置及使用,然后灵活配置各个组件的应用这一步一个脚印的往前进,循序渐进才能走的更远。这个过程会花费很长的时间所以耐心,是我完成搭建 replication 的一个必要条件


上面这张图,简明扼要的阐述了 replication 的架构与组件绿線表示读,红线表示写看图说话,我们一一将里面的关键点说明白:

  1. Publisher, Distributor, Subscriber, 这三者可以分布在不同的 database instance 上面也可以都在同一个 Instance 上面。 实践中峩们一般都会将三种角色,分布在三个不同的服务器的 database instance 上面保证了应用的可用性,不至于一台服务器宕机其他服务都不可用的状况。
  2. Distributor 這个角色所在的 database instance 里面具体就是配置在 Distribution 这个数据库里面,当然这个数据库名字可以更改我们需要知道的是,这个数据库就像是一组元数據存储了我们定义好的一系列 replication 组件,包括像 publication, subscription 等等 这里唯一要注意的,就是


SQL Server Agent 主要包括以下几个组件:作业、警报、操作


要对SQL Server 2008 中的数据进荇操作需要先使用登录名登录SQL Server 2008,然后再对数据库操作

在对数据库进行操作时,其所操作的数据库中还要存在与登录名相对应的数据库鼡户


登录名仅可以登录到SQL Server中,如果想操作SQL Server中的数据库还需要在所操作的数据库中拥有相应的数据库用户,否则不能对这个数据库进行操作

SQL Server中的密码最多可包含128个字符,其中包括字母、符号和数字

由于在Transact-SQL语句中(以下简称SQL语句)中经常使用登录名、用户名、角色和密碼,所以必须用英文双引号(")或方括号([])分隔某些符号



SQL Server为了完善数据库的管理机制,设计了严格的命名规则用户在创建数据库及數据库对

象时必须严格遵守SQL Server的命名规则。本节将对标识符对象实例的命名进行详细的介绍

在SQL Server中,服务器、数据库和数据库对象(如表、视图、列、索引、触发器、过程、约束

和规则等)都有标识符数据库对象的名称被看成是该对象的标识符。大多数对象要求带有标識符

但有些对象(如约束)中标识符是可选项。

对象标识符是在定义对象时创建的标识符随后用于引用该对象,下面分别对标识符的格式及分

在定义标识符时必须遵守以下规定

(l)标识符的首字符必须是下列字符之一。

1.统一码(Unicode) 2.0标准中所定义的字母包括拉丁字母a--z和A~Z,以忣来自其他语 言的字符

2.下划线“_”、符号“@”或者数字符号“#”。

在SQL Server中某些处于标识符开始位置的符号具有特殊意义。以“@”符号开始的标识符表

示局部变量或参数;以一个数字符号“#”开始的标识符表示临时表或过程如表“#gzb”就是一张临

时表;以双数字符号“##”开始的标识符表示全局临时对象,如表“##gzb”则是全局临时表

注意某些Transact-SQL函数的名称以“@@ ”符号开始,为避免混淆这些函数建议不要使

用以“@@”开始的名称。

(2)标识符的后续字符可以是以下3种

2.来自拉丁字母或其他国家/地区脚本的十进制数字。

3.“@”符号、美元符号“$”、数字苻号“#”或下划线“_”

(4)不允许嵌入空格或其他特殊字符。

SQL Server将标识符分为以下两种类型

常规标识符:符合标识符的格式规则。

分隔标识苻:包含在双引号(“”)或者方括号([])内的标识符

该标识符可以不符合标识 符的格式规则,如[MR GZGLXT]中MR和GZGLXT之间含有空格‘但因为使用了方括号,所以视为分隔标识符

注意:常规标识符和分隔标识符包含的字符数必须在1~128之间,对于本地临时表标识符最

多可以有116个字符。

SQL Server 2008的数据庫对象的名字由1- 128个字符组成不区分大小写。使用标识符也可以作 为对象的名称

在一个数据库中创建了一个数据库对象后,数据库对象嘚完整名称应该由

服务器名数据库名拥有者名对象名4部分组成其格式如下:

服务器、数据库和所有者的名称即所谓的对象名称限萣符。当引用一个对象时不需要指定服务 器、数据库和所有者,可以利用句号标出它们的位置从而省略限定符。

对象名的有效格式如丅:


注意:不允许存在4部分名称完全相同的数据库对象在同一个数据库中可以存在两个名为 EXAMPLE的表格,但前提必须是这两个表的拥有者不哃

2008提供了两种类型的实例,即默认实例和命名实例

此实例由运行它的计算机的网络名称标识。使用以前版本SQL Server客户端软件的应用程序可鉯

连接到默认实例SQL Server 6.5版或SQL Server 7.0版服务器可作为默认实例操作。但是一台计算

机上每次只能有一个版本作为默认实例运行。

计算机可以同时运荇任意个SQL Server命名实例实例通过计算机的网络名称加上实例名称以


SQL语句多表关联去除重复的记录 [问題点数:50分结帖人u]

我的数据库是ACCESS,现在我有多张表,现在我用keyjobno关联了,keyjobno是我的关联字段但当中有重复的记录,怎样去除重复的记录请教高手,我花了很多时间都没解决到急啊·············下面附上图1、图2,图1:

图1的结果集是我想要的结果

图2是我用语句查询出来结果但不符合我想要的结果。这是我的语句

表之间关联的关联没有建好

每个表都有主键,他们之间仅以keyjobno关联吗一次性查询,虽然都有keyjobno,泹存在冗余是不可避免的


@hdhai9451目前只是用keyjobno来关联。你写的语句我在SQL Server2008中试过没能达到我的要求。现在我想关联后如果在同一张表中有相同嘚记录只显示1条,剩余的为空多表关联后用distinct是不行的,因为distinc作用在了多个表的字段中不知hdhai9451你还有没有什么办法来处理我这个问题?如果你想增加字段来关联的话也可以,只要达到我的要求即可

BCD表用ID连A表用Keyjobno连接,是否可以试下

你没有关键字关联,那么得自己加上行號试试:

你这里的第1列1005,和第2列的小明还是返回了多行相同的记录我只要求返回一行。还有你用in_union_his表来做left join,即,你是用记录数最多的表放茬第一位才行这样一来就不灵活了,那么我每次做查询都要去判定那个表的记录数最多才可进行查询

其实我设计数据库是这样的,welfare是主表其它3张表是子表,welfare只返回一行记录就行了其它表关联后不显示重复记录,重复的为空或null;

各位大虾们你们写的语句一定要在ACCESS数據库通过才行

welfare是主表,其它3张表是子表子表的记录可以随意添加,welfare表每个keyjobno只能有一条记录即welfare表的keyjobno是主键,welfare只返回一行记录就行了其咜表关联后不显示重复记录,重复的为空或null;

看来没高手能解决这个问题

匿名用户不能发表回复!

参考资料

 

随机推荐