欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql去重、or、in、and、groupby的使用

程序员文章站 2022-05-03 10:54:33
...

表结构如下
sql去重、or、in、and、groupby的使用
查询一:查询name在 ‘111’,‘222’,‘liuyao’,‘zhai’ 之间任意一个,或者age等于20的数据(如果条件是并且,使用and)

SELECT * from user 
WHERE 1=1
and name in ('111','222','liuyao','zhai')
or age = 20

查询结果:可以看出满足上述条件 ,但test3这条数据有重复
sql去重、or、in、and、groupby的使用
查询二:查询name在 ‘111’,‘222’,‘liuyao’,‘zhai’ 之间任意一个,或者age等于20的数据,并且按照name对数据去重

如果数据库有两条数据一模一样,使用下边的sql即可去重
select distinct * from table(表名) where (条件)

但是本次的数据结构有唯一id 不符合上述条件,需要这样来去重
①:先查出满足条件的全部数据
②:对满足条件的数据按照name过滤
③:取所有过滤后数据的id
④:查询id 在过滤后id内的所有数据,即可去重!

SELECT * from user
where id in (
				select id from
							(SELECT * from user 
								WHERE 1=1
								and name in ('111','222','liuyao','zhai')
								or age = 20) a
				group by name ) 

查询结果:
sql去重、or、in、and、groupby的使用

查询三:查询name在 ‘111’,‘222’,‘liuyao’,‘zhai’ 之间任意一个,或者age等于20,并且tel等于 45465 的数据

这个查询条件是要在(查询name在 ‘111’,‘222’,‘liuyao’,‘zhai’ 之间任意一个,或者age等于20)的查询结果中,只要tel等于 45465 的数据
需要注意的是多个and 和 or之间的运用
当使用or时,需要给当前条件加上() 否则查询结果不成立

SELECT * from user 
			WHERE 1=1	
			and 
			(name in ('111','222','liuyao','zhai')						
			or age = 20)
			and tel = '45465'

查询结果
sql去重、or、in、and、groupby的使用

相关标签: oracle sql