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'
--赋值
'exec
len
:'+Convert(varchar(10),Len(@name))
--convert(type,value)转换,Len(value)获取大小
'exec
charindex:'+Convert(varchar(10),CharIndex('e',@name))--CharIndex(find,value)
在value中查找find的位置
'not
replace:'+@name
'exec
replace:'+Replace(@name,';','')
--用replace替换
'exec
substring:'+Substring(@name,0,3)--用substring截取
@@RowCount
--返回上一行代码受影响的行数
作者:chenhuzi
SQL如何练习
可以用最简单的:SQLServer,MYSQL!装好后,新建个数据库,然后再建表,然后再造些数据,最后在表里写SQL语句,可以直接运行的!
sqlserver存储过程要怎么练啊,我是做.NET的,不知道要怎么练才会比较快上手,感觉每次写存储过程都笨笨的T_T
多写。我刚接触存储过程的时候,感觉什么都不懂。慢慢接触多了,写的存储过程也越来越难,现在就熟练了。
网站标题:sqlserver复习,SQLserver选择题
网页地址:http://myzitong.com/article/hdjjss.html