网站建设资讯

NEWS

网站建设资讯

sqlserver复习,SQLserver选择题

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

还是先上代码吧

创新互联网站建设服务商,为中小企业提供网站制作、网站设计服务,网站设计,网站运营等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联。

,可以先看

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

SQL如何练习

可以用最简单的:SQLServer,MYSQL!装好后,新建个数据库,然后再建表,然后再造些数据,最后在表里写SQL语句,可以直接运行的!

sqlserver存储过程要怎么练啊,我是做.NET的,不知道要怎么练才会比较快上手,感觉每次写存储过程都笨笨的T_T

多写。我刚接触存储过程的时候,感觉什么都不懂。慢慢接触多了,写的存储过程也越来越难,现在就熟练了。


分享文章:sqlserver复习,SQLserver选择题
网站链接:http://cdweb.net/article/hdjjss.html