SQL语句学习积累笔记

1.Oracle数据库查询某一时间段内的数据
eg.查询T_TABLE_NAME中过去一周的数据总和,时间字段为date

SELECT count(ID)
FROM T_TABLE_NAME
WHERE date
BETWEEN TRUNC(sysdate -7) and TRUNC(sysdate)

2.Oracle数据库查询/删除同一张表中的重复记录
(1)查找表中多余的重复记录,重复记录是根据单个字段来判断
eg.查询T_TABLE_NAME中字段id重复的记录

SELECT *
FROM 
	T_TABLE_NAME
GROUP BY
	id 
HAVING
	count( id ) > 1

(2)查找表中多余的重复记录,重复记录是根据多个字段来判断
eg.查询T_TABLE_NAME中字段id和字段name同时重复的记录,并根据id进行降序排序

SELECT * 
FROM
	T_TABLE_NAME 
WHERE
	( T_TABLE_NAME.id, T_TABLE_NAME.name ) IN ( SELECT id, name T_TABLE_NAME GROUP BY id, name HAVING count( * ) > 1 )
ORDER BY id DESC

(3)查找表中多余的重复记录,重复记录是根据多个字段来判断,只留有rowid最小的记录
eg.查询T_TABLE_NAME中字段id和字段name同时重复的记录,只留number最小的记录

SELECT * 
FROM
	T_TABLE_NAME
WHERE
	( T_TABLE_NAME.id, T_TABLE_NAME.name ) IN ( SELECT id, name FROM T_TABLE_NAME GROUP BY id, name HAVING count( * ) > 1 ) 
	AND number NOT IN ( SELECT min( number ) FROM T_TABLE_NAME GROUP BY id, name HAVING count( * ) > 1 )

(4)删除表中多余的重复记录,重复记录是根据多个字段来判断,只留有rowid最小的记录
eg.删除T_TABLE_NAME中字段id和字段name同时重复的记录,只留number最小的记录

DELETE 
FROM
	T_TABLE_NAME 
WHERE
	(  T_TABLE_NAME.id, T_TABLE_NAME.name  ) IN ( SELECT id, name FROM T_TABLE_NAME GROUP BY id, name HAVING count( * ) > 1 ) 
	AND number NOT IN ( SELECT min( number ) FROM T_TABLE_NAME GROUP BY id, name HAVING count( * ) > 1 )

3.Oracle数据库中查询不重复数据
eg.查询T_TABLE_NAME中字段id和字段name同时均不重复的记录

SELECT DISTINCT id,name
FROM T_TABLE_NAME
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值