数据库简单查询——特定记录的查找和查找语句中if~else的实现

特定记录的查找

1、SQL Server

使用关键字TOP,限制返回的行数TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
select top 5 * from 表名

2、MySQ

使用Limit
select * from 表名 limit 5

3、Oracle

在where字句中通过使用ROWNUM来限制行数
select * from 表名 where rownum<=5

查询A第11条到第15条数据
1、MySQL使用 limit m,n
select * from A limit 10,5;
或者select * from A limit 5 offset 10;
2、SQL Server使用top
select top 5 * from A where not in (select top 10 排序字段from 表名)

3、Oracle使用rownum
select * from (select 字段,rownum from 表名where rownum<=15)where rownum >= 10;

最佳选择:利用分析函数以上四种数据库都支持
select row_number() over(ORDER BY 字段 asc) as rownumber,* from 表名
这样查出来的表中就会多一列“rownumber”,从1开始递增。这就好办了,在外面嵌套一层就可以“为所欲为”了
开窗函数:over()将统计出来的数据分布到原表的每一行中结合聚合函数、排名函数使用
rank()/dense_rank()
rank()和dense_rank()可以将所有的都查找出来,rank可以将并列第一名的都查找出来;rank()和dense_rank()区别:rank()是跳跃排序,有两个第二名时接下来就是第四名。是连续排序,有两个第二名时仍然跟着第三名

查找语句中if~else的实现

1、

 IF(expr1,expr2,expr3) 

如果 expr1 是TRUE 则返回expr2; 否则返回值则为 expr3
例:select name, if ( sex = 1, ‘男’, ‘女’ ) as ‘性别’ from 表名

2、

   IF …
   BEGIN
   …(代码块)
   END
   ELSE (注意这里没有ELSE IF,要实现只能在下面的块中用IF判断)
   BEGIN
   …(代码块)
   END

3、

    CASE sex
    WHEN ‘1’ THEN ‘男’
    ELSE ’女’(可省略)
    END

等价于
CASE WHEN sex=1 THEN ‘男’
ELSE ‘女’
END

注意
(1)case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
(2)最后必须用end结尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值