数据库查询过滤条件

104 阅读2分钟

本功能中函数用于oracle中,其他数据库根据思想自行百度。

问题描述:

  在bug修复中发现前辈,条件过滤不充分,为了不破坏原sql结构。尽量加条件。过滤条件,除了and、or、if、group by 、having这些字段。还有一个差集、交集、并集、in、not in。

过滤介绍:

  1、其他常用,不做介绍。in和not in有局限,首先in的容量好像不可以放操作1000条数据,如果你的过滤条件会随着时间变化而增加,不要使用in,其二使用in会涉及sql优化失效。   2、当需要过滤的条件有很多值,可以和原来表做交集

例子:

  比如数据库一个商品表里面,同一个人有不同的商品订单,商品订单又有多种。我们只要某个人,某种商品的状态数据   数据库表名shop 字段名 id, name, price, address, idcard,status

select * from shop where idcard = '131001'
minus    -- 做差集
(
	--查询出重复的idcard, 且status=2的数据
	select idcard from shop 
	where status='2'
	group by idcard
	having count(*)>1
)

解释:

  1、第一条sql查出这个人在shop表里面所有状态的商品,   2、第二条sql查出这个人在shop表里面status状态为2的所有数据。   3、做差集结果为,这个人在shop表里面status状态不为2的其他数据

后语:

  这个sql是复杂场景下的简化需求。工作原因不能复现问题。大家根据sql思想自己完善。大家有性能好的sql可以提出。

其他

自己建立了一个技术群,大家愿意主动学习和分享,愿意一块实现一些有意思的技术,进行理论和实践的交流。这里面有前端和后段,不是单一的一种,方便大家沟通前后端兼容问题

4530a92078099847d0eec48ac91353b.jpg