数据库SQL学习

数据库SQL工作学习:

整理下工作中遇到到一下有难度的SQL


1 in和exists的区别:

通常来说能用exists解决的就绝对不用in,因为in的时候字段多了会引起索引不生效,影响搜索的效率,而exists不会影响索引

1、 exists的用法
select a.* from t_review_blacklist a WHERE
not exists (select 1 from t_baidu_blacklist_add b where b.t_review_blacklist_id = a.id )
order by a.id desc limit 1000 ;

2、 in的用法
select a.* from t_review_blacklist a WHERE
and a.id not in (select b.a_id from t_baidu_blacklist_add b )
order by a.id desc limit 1000 ;

在平常的写SQL语句做开发和查询的时候,善用order by 和limit会提高效率.

in和exists的区别原理详解:https://www.cnblogs.com/zhuyeshen/p/10955417.html


2:指定天数动态查询

比如:指定查询超时几天的订单

1、查询超时七天的订单,当前时间-订单实际 >= 7 并且 < 6
SELECT * FROM t_collection WHERE overdue_time >= (NOW() - interval ‘1’ day * 7) and overdue_time < (NOW() - interval ‘1’ day * 6) order by overdue_time desc limit 1000;


3:decode、case when区别

case表达式和decode函数具有同样的功能。decode是Oracle数据库特有的函数,而case表达式则是符合SQL/92标准的语法。

1、decode

SELECT p.*,decode(p.product_type_id,1,‘book’,2,‘video’,3,‘dvd’,4,‘cd’,‘magazine’) type_name
FROM products p;

2、case when

select p.*,CASE p.product_type_id
WHEN 1 THEN ‘book’
WHEN 2 THEN ‘video’
WHEN 3 THEN ‘dvd’
WHEN 4 THEN ‘cd’
ELSE ‘magazine’
END type_name
from products p;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值