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

डुप्लिकेट कैसे निकालें ताकि तालिका में केवल जोड़े मौजूद हों?

आप किसी भी पंक्ति को हटाना चाहते हैं जहाँ पिछली पंक्ति का प्रकार समान हो। तो:

select timestamp, type
from (select t.*,
             lag(type) over (order by timestamp) as prev_type
      from ticket_events t
     ) t
where prev_type <> type or prev_type is null;

where खंड को इस प्रकार भी कहा जा सकता है:

where prev_type is distinct from type

यदि आप "अपमानजनक" पंक्तियों को हटाना चाहते हैं, तो आप निम्न कार्य कर सकते हैं -- मान लें कि timestamp अद्वितीय है:

delete from ticket_events
    using (select t.*,
                  lag(type) over (order by timestamp) as prev_type
           from ticket_events t
          ) tt
    where tt.timestamp = t.timestamp and
          tt.prev_type = t.type;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में एकाधिक कॉलम के लिए प्राथमिक कुंजी?

  2. PostgreSQL में अभिव्यक्ति अनुक्रमणिका की व्यावहारिक सीमाएँ

  3. PostgreSQL में 'न-नल-स्ट्रिंग' सरणी प्रकार का कॉलम घोषित करें

  4. पीजी ::डुप्लीकेटटेबल:त्रुटि:संबंध पोस्ट पहले से मौजूद हैं

  5. पोस्टग्रेस्क्ल:लेनदेन तैयार करें