oracle/mysql數(shù)據(jù)庫多條重復(fù)數(shù)據(jù)如何取最新的
MYSQL
1、分組取最新的,再用最新的字段連表,回查數(shù)據(jù)
①按分組字段取最新的,通過主鍵id回表查數(shù)據(jù)
select * from table_name WHERE id in ( select max(id) id from table_name GROUP BY 分組字段)
②非主鍵字段
SELECT r.*
FROM records r
INNER JOIN (
SELECT group_id, MAX(timestamp) as latest
FROM records
GROUP BY group_id
) as latest_records
ON r.group_id = latest_records.group_id
AND r.timestamp = latest_records.latest;ORACLE
1、原理講解-可直接看2
篩選出最新的
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY LOCALAUTHID ORDER BY LASTUPDATETIME DESC) AS rn
FROM USER_LOCALAUTH_STATE t
) t
WHERE t.rn = 1;解釋:
這個(gè)序號(hào)是基于[LOCALAUTHID]字段進(jìn)行分區(qū)的(即每個(gè)[LOCALAUTHID]值都是一個(gè)新的分區(qū)),并且在每個(gè)分區(qū)內(nèi)部,行是按照LASTUPDATETIME字段降序排列的

2、在重復(fù)數(shù)據(jù)取最新的
SELECT *
FROM (
SELECT t.*,ROW_NUMBER() OVER (PARTITION BY LOCALAUTHID ORDER BY LASTUPDATETIME DESC) AS rn
FROM
(
-- 篩選存在重復(fù)的數(shù)據(jù),count(LOCALAUTHID) > 1
select * from USER_LOCALAUTH_STATE
where LOCALAUTHID in (
SELECT LOCALAUTHID
FROM USER_LOCALAUTH_STATE WHERE STATE = 1 AND BUSINESSTYPE=1
group by LOCALAUTHID having count(LOCALAUTHID) > 1)
) t
) rt
WHERE rt.rn = 1;
3、若要?jiǎng)h除不滿足條件
在2的基礎(chǔ)上,通過[LOCALAUTHID]查詢,并刪除ID不再2中的

附:ORACLE 查詢某個(gè)時(shí)間之前的重復(fù)數(shù)據(jù)中時(shí)間最早的一條記錄
接到任務(wù),查詢2021年之前的US_ADDCONSIGN表中用戶信息。
同時(shí)同事告知,有用戶重復(fù)注冊所以信息有重復(fù)的,要求重復(fù)的信息中獲取目前仍有效,且注冊時(shí)間最早的那一條記錄。
select * from (select row_number() over (partition by certno order by consigndate) rn, a.* from US_ADDCONSIGN a where 1=1 and state=1 ) where rn=1 and to_date(consigndate,'yyyymmdd')<to_date('20210101','yyyymmdd');
總結(jié)
到此這篇關(guān)于oracle/mysql數(shù)據(jù)庫多條重復(fù)數(shù)據(jù)如何取最新的文章就介紹到這了,更多相關(guān)sql多條重復(fù)數(shù)據(jù)取最新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL數(shù)據(jù)庫中刪除重復(fù)記錄的方法總結(jié)[推薦]
- sqlserver中重復(fù)數(shù)據(jù)值只取一條的sql語句
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- mysql查找刪除重復(fù)數(shù)據(jù)并只保留一條實(shí)例詳解
- MySQL根據(jù)某一個(gè)或者多個(gè)字段查找重復(fù)數(shù)據(jù)的sql語句
- mysql數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)只保留一條方法實(shí)例
- Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)
相關(guān)文章
從基礎(chǔ)語法到最佳實(shí)踐詳解SQL分頁查詢完整指南
在數(shù)據(jù)庫查詢中,分頁(Pagination) 是一項(xiàng)基本且關(guān)鍵的技術(shù),本文將從 SQL分頁的基礎(chǔ)語法 講起,逐步深入探討 不同數(shù)據(jù)庫的分頁實(shí)現(xiàn)方式,有需要的小伙伴可以了解下2025-07-07
通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程
.ibd 文件是 InnoDB 存儲(chǔ)引擎的核心數(shù)據(jù)文件,存儲(chǔ)表的行數(shù)據(jù)、索引及元信息,本文主要為大家介紹了通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程,需要的朋友可以參考下2025-11-11
mysql數(shù)據(jù)庫的全量與增量的備份以及恢復(fù)方式
在數(shù)據(jù)庫管理中,全量備份與恢復(fù)是將整個(gè)數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)出并在需要時(shí)完整地恢復(fù),這通常使用mysqldump工具完成,增量備份則是在全量備份的基礎(chǔ)上,只備份那些自上次全量備份后發(fā)生變化的數(shù)據(jù),這需要數(shù)據(jù)庫的二進(jìn)制日志(binlog)開啟2024-09-09
IDEA連接mysql又報(bào)錯(cuò)!Server returns invalid timezone. Go to tab an
這篇文章主要介紹了IDEA連接mysql又報(bào)錯(cuò)!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-05-05

