常用sql写法
2013-12-03 15:19
148 查看
一:将两个不相关的两个sql查询结果合并起来
有时候我们为了减少与数据库的查询次数可以把几个需要的值一起查询出来,虽然大多数情况下可以用连接查询
但是还是有时候没有什么关联的
select a.m,b.n from ( select * from x ) a ,
(select * from y ) b
其实也很好理解就是把查询的结果当成一张临时表来取数据
二:清空表并让自增加列为初始值
truncate
table 表名
三:去重复,查询某列重复的值
方法1:
delete from test where id not in (select max(id) from test with(nolock) group by bookname,nuthor having count(id) > 0)
方法2:WITH myd AS
(
SELECT ROW_NUMBER()
OVER(PARTITION BY bookname,nuthor ORDER BY ID )
AS NUM,* FROM test
)
DELETE FROM myd
WHERE NUM != 1
四:分页
1: select * from (
select *, ROW_NUMBER() OVER(Order by a.CreateTime DESC ) AS RowNumber from table_name as a
) as b
where RowNumber BETWEEN 1 and 5
2:select
*
from(
select ROW_NUMBER() OVER( ORDER BY PSIO.CreateTime DESC ) AS RowNumber,PSIO.SeqNo,PSIO.CreateTime from dbo.Output PSIO
inner join Album PPA on PSIO.PPAID=PPA.PPAID
where PPA.PPAID=103--PPAID=3.PPAID
) T where RowNumber BETWEEN 1 and 5 order by 1
3:sqlserver2012分页方式
五:字符串列需要包含匹配的查询
例如可能得星期是:周一,周三
前台搜索条件是周一,周三,周五
我们应该把数据库星期为周一,周三的都查询出来
可以先把条件分割成周一,周二,周三,然后分别和数据库的字段like一下
六:按照某个条件进行排序
--比如想让c排第一 此时后边的排序会受col排序的影响
select * from tb
order by case when col='c' then 0 else 1 end,col,id
--此时可以让c排第一,且后边的排序会受col排序的影响
select * from tb
order by case when col='c' then 0 else 1 end,id
七:查询含有单引号的数据
select
* from Price_Port where NameEN like '%'+char(39)+'%'
去掉单引号
update
Price_Port set NameEN = REPLACE(NameEN,'''','') where NameEN like '%'+char(39)+'%'
有时候我们为了减少与数据库的查询次数可以把几个需要的值一起查询出来,虽然大多数情况下可以用连接查询
但是还是有时候没有什么关联的
select a.m,b.n from ( select * from x ) a ,
(select * from y ) b
其实也很好理解就是把查询的结果当成一张临时表来取数据
二:清空表并让自增加列为初始值
truncate
table 表名
三:去重复,查询某列重复的值
方法1:
delete from test where id not in (select max(id) from test with(nolock) group by bookname,nuthor having count(id) > 0)
方法2:WITH myd AS
(
SELECT ROW_NUMBER()
OVER(PARTITION BY bookname,nuthor ORDER BY ID )
AS NUM,* FROM test
)
DELETE FROM myd
WHERE NUM != 1
select username,COUNT(id) as '重复次数' from Org_Register group by username having COUNT(id)>1
四:分页
1: select * from (
select *, ROW_NUMBER() OVER(Order by a.CreateTime DESC ) AS RowNumber from table_name as a
) as b
where RowNumber BETWEEN 1 and 5
2:select
*
from(
select ROW_NUMBER() OVER( ORDER BY PSIO.CreateTime DESC ) AS RowNumber,PSIO.SeqNo,PSIO.CreateTime from dbo.Output PSIO
inner join Album PPA on PSIO.PPAID=PPA.PPAID
where PPA.PPAID=103--PPAID=3.PPAID
) T where RowNumber BETWEEN 1 and 5 order by 1
3:sqlserver2012分页方式
select number from spt_values where type='p' order by number offset 10 rows fetch next 5 rows only;
五:字符串列需要包含匹配的查询
例如可能得星期是:周一,周三
前台搜索条件是周一,周三,周五
我们应该把数据库星期为周一,周三的都查询出来
可以先把条件分割成周一,周二,周三,然后分别和数据库的字段like一下
六:按照某个条件进行排序
--比如想让c排第一 此时后边的排序会受col排序的影响
select * from tb
order by case when col='c' then 0 else 1 end,col,id
--此时可以让c排第一,且后边的排序会受col排序的影响
select * from tb
order by case when col='c' then 0 else 1 end,id
七:查询含有单引号的数据
select
* from Price_Port where NameEN like '%'+char(39)+'%'
去掉单引号
update
Price_Port set NameEN = REPLACE(NameEN,'''','') where NameEN like '%'+char(39)+'%'
相关文章推荐
- 常用数据库操作类SQLhelp的写法
- 常用几种数据库,取前10条记录的sql语句写法
- 常用几种数据库,取前10条记录的sql语句写法
- DB2常用SQL的写法(持续更新中...)
- 常用几种数据库,取前10条记录的sql语句写法
- 常用数据库 取前几条数据 sql写法
- DB2的一些常用SQL写法(转)
- 一些常用的sql写法
- 常用几种数据库,取前10条记录的sql语句写法
- 常用MS-SQL写法整理
- DB2常用SQL的写法
- (转)DB2常用SQL的写法
- 常用几种数据库,取前10条记录的sql语句写法
- DB2 常用SQL的写法(转)
- 常用数据库取前10条sql语句写法
- pdo常用的sql写法
- DB2常用SQL的写法
- 几种常用数据库(SQLServer Oracle db2 mysql等)分页SQL的写法总结
- 数据库常用写法,笔记难的SQL写法
- 常用sql功能标准写法