sqlserver不重复,sql 不显示重复数据

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

还是先上代码吧

创新互联建站是专业的长沙网站建设公司,长沙接单;提供成都做网站、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行长沙网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

,可以先看

SQL语句去掉重复记录,获取重复记录

复制代码

代码如下:

ALTER

procedure

[dbo].[PROC_ITEMMASTER_GETUNIQUE]

@PAGEINDEX

INT,@uid

int,@itemnumber

varchar(50)

AS

begin

tran

--开始事务

drop

table

[ItemMaster].[dbo].[testim]

--删除表

--把不重复记录转存到testim中

select

*

into

[ItemMaster].[dbo].[testim]

from

[ItemMaster].[dbo].[dat_item_master]

where

item_uid

in(select

min(item_uid)

as

item_uid

from

[ItemMaster].[dbo].[dat_item_master]

group

by

item_number)

and

status=0

select

top

10

*

from

[ItemMaster].[dbo].[testim]

where

item_uid

not

in

(select

top

(10*(@PAGEINDEX-1))

item_uid

from

[ItemMaster].[dbo].[testim])

and

owneruid=@uid

and

item_number

like

@itemnumber+'%'

--判断是否出错

if

@@error0

begin

rollback

tran

--出错则回滚

end

else

begin

--否则提前事务

commit

tran

end

我的数据是这样的:因为item_uid是标识列,item_number有重复的,

我想过滤成这样:

顺带说几个在编程的时候遇到的小问题

1.程序

出现

Could

not

find

stored

procedure

找不到这个存储过程

因为我的程序数据库有四个,而默认连接是A,但实际要执行B库里的存储过程,导致出错,

解决办法1:可在A里面建个一样的存储过程2:在执行连接的时候,替换下数据库就行了

2.

asp.net/C#

将存储过程中返回的数据集,填充到dataset/datatable

复制代码

代码如下:

SqlConnection

conn

=

new

SqlConnection(ConfigurationManager.ConnectionStrings["SolutionSQLServer"].ToString());

SqlCommand

cmd

=

new

SqlCommand("Test",conn);

cmd.CommandType

=

CommandType.StoredProcedure;

cmd.Parameters.Add("@MaxId",

SqlDbType.Int).Value

=

12000;

SqlDataAdapter

sda

=

new

SqlDataAdapter(cmd);

DataTable

dt

=

new

DataTable();

sda.Fill(dt);

在这感谢

3.在存储过程里面,写SQL语句不能动态不加order

by

功能

比如

复制代码

代码如下:

--·@new_orderby

是传入参数,不能这样写

select

top

(10*(2-1))

item_uid

from

testim

order

by

@new_orderby

--执行这个的时候,SQL会出现

The

SELECT

item

identified

by

the

ORDER

BY

number

1

contains

a

variable

as

part

of

the

expression

identifying

a

column

position.

Variables

are

only

allowed

when

ordering

by

an

expression

referencing

a

column

name.

不过我找到解决办法,不过很麻烦,

(第二个回答用

'

sql

'进行连接)

(用case

end

也行)

4.

select

into

insert

into

select

两种复制文句

(这里感谢)

1.INSERT

INTO

SELECT语句

语句形式为:Insert

into

Table2(field1,field2,...)

select

value1,value2,...

from

Table1

要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

2.SELECT

INTO

FROM语句

语句形式为:SELECT

vale1,

value2

into

Table2

from

Table1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

5.顺便复习下常用的SQL方法语句

复制代码

代码如下:

declare

@name

varchar(200)

--声明变量

set

@name='abcd;def'

--赋值

print

'exec

len

:'+Convert(varchar(10),Len(@name))

--convert(type,value)转换,Len(value)获取大小

print

'exec

charindex:'+Convert(varchar(10),CharIndex('e',@name))--CharIndex(find,value)

在value中查找find的位置

print

'not

replace:'+@name

print

'exec

replace:'+Replace(@name,';','')

--用replace替换

print

'exec

substring:'+Substring(@name,0,3)--用substring截取

print

@@RowCount

--返回上一行代码受影响的行数

作者:chenhuzi

sqlserver 数据有重复怎么删除

1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。

delete

from

where

aa

in

(select

aa

from

group

by

aa

having

count(aa)

1)

and

bb

not

in

(select

max(bb)

from

group

by

aa

having

count(aa)

1);

2、有多种写法:

delete

A

from

B

where

A.AA

=

B.AA

delete

A

from

A,B

where

A.AA

=

B.AA

delete

A

where

AA

in

(select

AA

from

B)

3、使用into关键字:

select

*

into

新表名

from

原表

4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):

select

substring(字段,1,3)

from

表名

SQLServer中如何获取没有重复的记录,记录中字段有text,或image数据类型

查询并显示SignsRoadcost不重复的数据

1、表中有IDENTITY 属性字段

假设其IDENTITY 属性字段字段为id

select a.* into # from tb_Allocations a

select * from # a where id in(select min(id) as id from # b

where a. SignsRoadcost=b. SignsRoadcost)

2、表中没有IDENTITY 属性字段

select a.*,id=identity(int,1,1) into # from tb_Allocations a

select * from # a where id in(select min(id) as id from # b

where a. SignsRoadcost=b. SignsRoadcost)

如何防止sqlserver merge into插入重复

把重复的那个字段设置为主键,不用做任何判断,自动就是插入不了重复的数据了

2.就是你用sql判断是否存在这条信息决定是否插入if(exists(select * from tb where username='zhangshan'))

以上两种情况,看能不能满足你的需求

SQLServer 筛选出时间最新的且不重复的数据

用ROW_NUMBER()去写吧

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN

sqlserver 去掉重复记录

首先设定表tb_a 唯一关键字段 xh,以及要查询的重复字段 mc 则查询mc重复的sqlserver语句如下

select mc from tb_a where xh not in (select min(xh) xh from tb_a group by mc)


标题名称:sqlserver不重复,sql 不显示重复数据
网站地址:http://scyanting.com/article/hoppej.html