यह उन सभी पंक्तियों को लौटाता है जहां एक डुप्लिकेट मौजूद है :
SELECT employee_id, leave_date, no_of_days, leave_state
FROM hr_holidays_by_calendar h
WHERE EXISTS (
SELECT -- select list can be empty for EXISTS
FROM hr_holidays_by_calendar
WHERE employee_id = h.employee_id
AND leave_date = h.leave_date
AND leave_state <> 'refuse'
AND ctid <> h.ctid
)
AND leave_state <> 'refuse'
ORDER BY employee_id, leave_date;
यह स्पष्ट नहीं है कि leave_state <> 'refuse'
आवेदन करना चाहिए। आपको आवश्यकताओं को परिभाषित करना होगा। मेरा उदाहरण leave_state = 'refuse'
. वाली पंक्तियों को बाहर करता है (और leave_state IS NULL
इसके साथ!) पूरी तरह से।
ctid
आपकी अज्ञात (अपरिभाषित?) प्राथमिक कुंजी के लिए एक गरीब आदमी का सरोगेट है।
संबंधित:
- मैं कैसे (या मैं कर सकता हूं) एकाधिक स्तंभों पर DISTINCT का चयन कैसे करूं?
- क्या पढ़ना आसान है उपप्रश्न मौजूद हैं?