例如
declare @pageIndex int , -- 页码
declare @pageSize int, -- 页尺寸
select top ((@PageIndex)*@PageSize) --取出前PageIndex页的数据
field1,field2,--查询字段
fieldOrderby --排序字段,按什么字段分页的字段,建议使用主键,或者唯一键
into #tempTable --插入临时表
from tableName --查询表名称
order by fieldOrderby --排序字段,按什么字段分页的字段,
-----取出前pageIndex页数据插入临时表
------排除前pageIndex-1页的数据,取出第pageIndex的数据
select top (@PageIndex) --
field1,field2,--排序字段
fieldOrderby --
from #tempTable --从临时表中取数据
where fieldOrderby --
not in (select top ((@PageIndex-1)*@PageSize) fieldOrderby from #tempTable)---- 从 临时表取出 pageIndex的数据
可以把临时表去掉,换成对应的SQL,但感觉思路就不是特别清楚了。难道SQL可维护性不重要吗?
大家怎么写的,都写在一起吗?还是一步一步分开写?有什么坏处吗?
declare @pageIndex int , -- 页码
declare @pageSize int, -- 页尺寸
select top ((@PageIndex)*@PageSize) --取出前PageIndex页的数据
field1,field2,--查询字段
fieldOrderby --排序字段,按什么字段分页的字段,建议使用主键,或者唯一键
into #tempTable --插入临时表
from tableName --查询表名称
order by fieldOrderby --排序字段,按什么字段分页的字段,
-----取出前pageIndex页数据插入临时表
------排除前pageIndex-1页的数据,取出第pageIndex的数据
select top (@PageIndex) --
field1,field2,--排序字段
fieldOrderby --
from #tempTable --从临时表中取数据
where fieldOrderby --
not in (select top ((@PageIndex-1)*@PageSize) fieldOrderby from #tempTable)---- 从 临时表取出 pageIndex的数据
可以把临时表去掉,换成对应的SQL,但感觉思路就不是特别清楚了。难道SQL可维护性不重要吗?
大家怎么写的,都写在一起吗?还是一步一步分开写?有什么坏处吗?
SQL SERVER 里面的with表达式有的时候就挺好用的。
这样就可以直接嵌套了。
有些是无法分开的。例如
select * from table a where id=(select min(id) from table where colnam=a.colname)
分开写就完全没有必要。但是例如过程比较复杂的,中间需要多个步骤,无法一步到位就必须分开写。应该说实际情况实际分析。不是所有的情况都有固定的标准的。
if((select count(*) from tablename where name=@name)=0)
insert into ...--也可以
declare @count int
select @count=count(*) from tablename where name=@name
if(@count=0)
insert into ...
好像也都不重视SQL,也没听说过SQL有什么编码规范之类的东西?
http://topic.csdn.net/u/20091107/18/86d772cb-7d19-46b5-aaee-dac6300e85e4.html
不管可维护性??
T-SQL 编码标准
我就喜欢适度的分开,比如group by,我更喜欢套一层,这样出现问题的时候方便检查中间的结果
至于性能是不是有影响,也没有测试过,不了解^_^