Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल डीबी को हटाने के लिए डुप्लिकेट रिकॉर्ड की आवश्यकता है

उनकी आईडी और निर्माण टाइमस्टैम्प को छोड़कर पंक्तियां समान हैं। डुप्लीकेट खोजने के लिए, आपको अन्य सभी स्तंभों की तुलना करनी होगी:

दूसरी आईडी (t2.id <> t1.id के साथ डुप्लीकेट ढूंढकर दोनों पंक्तियों को खोजने वाली क्वेरी ):

select *
from hourly_report_table t1
where exists
(
  select *
  from hourly_report_table t2
  where t2.id <> t1.id
  and t2.application = t1.application
  and t2.api_date = t1.api_date
  and t2.api_hour = t1.api_hour
  and ...
);

t2.id < t1.id की तुलना करके केवल डुप्लिकेट के समूह की एक पंक्ति रखते हुए डिलीट स्टेटमेंट :

delete
from hourly_report_table t1
where exists
(
  select *
  from hourly_report_table t2
  where t2.id < t1.id
  and t2.application = t1.application
  and t2.api_date = t1.api_date
  and t2.api_hour = t1.api_hour
  and ...
);

अगर आप इसे किसी खास तारीख और घंटे तक सीमित रखना चाहते हैं, तो ऐसा करें।

where exists (...) and api_date = date '2020-09-27' and api_hour = 17

इस प्रकार आप केवल तालिका के हिस्से के साथ काम कर रहे हैं, लेकिन आपको यह सुनिश्चित करना होगा कि डीबीएमएस इस डेटा को जल्दी से ढूंढ सके (और बार-बार होल टेबल को पढ़ने की आवश्यकता नहीं है)। इसके लिए एक अनुक्रमणिका प्रदान करें:

create index idx1 on hourly_report_table (api_date, api_hour);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वसंत सुरक्षा लॉगिन ओरेकल के साथ काम नहीं कर रहा है

  2. तालिका त्रुटि बनाएँ - Oracle SQL

  3. जावा क्लास को ऑरैकल ट्रिगर से कैसे कॉल करें?

  4. जावा Oracle स्थानीय होस्ट कनेक्शन त्रुटि (ORA-12505)

  5. ओरेकल पीएल/एसक्यूएल में सीएसवी फाइलों को कुशलतापूर्वक पढ़ें और आयात करें