SQL备忘录(0106更新......)
2008-12-25 17:47
295 查看
N' AND (p_name like ''%'+ @KEY +'%''' //sql 写法 ''%'+ +'%''
ajax分页 2种方式
注意:
page是1 显示取 *
page不是1 显示取 * 在not in 里面 显示id 不是显示*
where子句 条件都是一样
alter proc m3_guestbook_getlist
@TYPE int,
@PAGE int,
@PAGESIZE int
as
set nocount on
declare @COUNT int
declare @NO1 int
declare @NO2 int
declare @SQL NVARCHAR(1024)
if @TYPE = 0
begin
if @PAGE = 1
BEGIN
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook where gb_type=0 order by gb_id desc '
END
else
begin
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook where gb_type=0 '+
' and gb_id not in (select TOP '+ CAST((@PAGE-1) * @PAGESIZE AS NVARCHAR(10)) +' gb_id from m3_guestbook where gb_type=0 order by gb_id desc) '+
' order by gb_id desc'
end
end
else
begin
if @PAGE = 1
BEGIN
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook order by gb_id desc '
END
else
begin
SET @SQL=N'select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook '+
' where gb_id not in (select TOP '+ CAST((@PAGE-1) * @PAGESIZE AS NVARCHAR(10)) +' gb_id from m3_guestbook order by gb_id desc) '+
'order by gb_id desc'
end
end
exec sp_executesql @SQL
SET ROWCOUNT 和 Top 作用一样
Microsoft SQL Server在返回指定的行数之后停止处理查询
select ... into 临时表 from 表 .....
实例:日志管理-点播统计ajax.aspx.cs- GetPlayCounts -logBll.GetCount
DB: 表:m3_lograteex PROC:m3_lograteex_getlist
对表 进行2次操作
select lre_program_id, count(lre_program_id) as lre_count from m3_lograteex group by lre_program_id order by count(lre_program_id) desc
得到 每一个lre_program_id点播的次数 通过group by lre_program_id 分组得到
还要得到 经分组后一共有多少个lre_program_id 用 select ... into 临时表 from 表 .....
select lre_program_id, count(lre_program_id) as lre_count into modtemp from m3_lograteex group by lre_program_id order by count(lre_program_id) desc
select count(1) from modtemp
drop table modtemp
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
ajax分页 2种方式
注意:
page是1 显示取 *
page不是1 显示取 * 在not in 里面 显示id 不是显示*
where子句 条件都是一样
alter proc m3_guestbook_getlist
@TYPE int,
@PAGE int,
@PAGESIZE int
as
set nocount on
declare @COUNT int
declare @NO1 int
declare @NO2 int
declare @SQL NVARCHAR(1024)
if @TYPE = 0
begin
if @PAGE = 1
BEGIN
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook where gb_type=0 order by gb_id desc '
END
else
begin
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook where gb_type=0 '+
' and gb_id not in (select TOP '+ CAST((@PAGE-1) * @PAGESIZE AS NVARCHAR(10)) +' gb_id from m3_guestbook where gb_type=0 order by gb_id desc) '+
' order by gb_id desc'
end
end
else
begin
if @PAGE = 1
BEGIN
SET @SQL=N' select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook order by gb_id desc '
END
else
begin
SET @SQL=N'select TOP '+ CAST(@PAGESIZE as nvarchar(10)) +' * from m3_guestbook '+
' where gb_id not in (select TOP '+ CAST((@PAGE-1) * @PAGESIZE AS NVARCHAR(10)) +' gb_id from m3_guestbook order by gb_id desc) '+
'order by gb_id desc'
end
end
exec sp_executesql @SQL
SET ROWCOUNT 和 Top 作用一样
Microsoft SQL Server在返回指定的行数之后停止处理查询
select ... into 临时表 from 表 .....
实例:日志管理-点播统计ajax.aspx.cs- GetPlayCounts -logBll.GetCount
DB: 表:m3_lograteex PROC:m3_lograteex_getlist
对表 进行2次操作
select lre_program_id, count(lre_program_id) as lre_count from m3_lograteex group by lre_program_id order by count(lre_program_id) desc
得到 每一个lre_program_id点播的次数 通过group by lre_program_id 分组得到
还要得到 经分组后一共有多少个lre_program_id 用 select ... into 临时表 from 表 .....
select lre_program_id, count(lre_program_id) as lre_count into modtemp from m3_lograteex group by lre_program_id order by count(lre_program_id) desc
select count(1) from modtemp
drop table modtemp
关于SET NOCOUNT
写存储过程的时候一直没有注意:SET NOCOUNT 这个是什么意思,今天突然想查一查:当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
相关文章推荐
- 我的常用Sql备忘录(不定时更新)
- JavaScript备忘录(0106更新ing......)
- Oracle SQL 操作记录 备忘录 持续更新
- 本人收藏的Sql server经典t-sql语句(备忘录,持续更新中)
- 我的常用Sql备忘录(不定时更新)
- 利用游标循环进行更新插入的SQL事务语句
- SQL常用函数及语句(不断更新)
- 数据库根据键值自动判断插入还是更新的SQL
- 批量更新的sql语句写法
- SqlServer Update更新语句因where条件不正确 造成更新全表的情况
- ThinkPHP 的SQL语句更新、插入
- sql语句问题 通过联立两个表更新其中一个表的字段
- CASCADE——SQL, sql server 2000 ,表间数据 ,级联更新删除
- 大批量延时更新SQL语句办法
- C# SqlDataAdapter.update结合事务(SqlTransaction)批量更新数据
- 用SQL语句更新表格
- [总结] Linux备忘录 [2012-02-08更新]
- DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除
- 工作中遇到的SQL三(更新中)
- SQL中 将同一个表中的A列更新到B列,B列更新到A列