Điều này trả về tất cả các hàng có trùng lặp :
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;
Không rõ nơi leave_state <> 'refuse'
nên áp dụng. Bạn sẽ phải xác định các yêu cầu. Ví dụ của tôi loại trừ các hàng có leave_state = 'refuse'
(và leave_state IS NULL
với nó!) hoàn toàn.
ctid
là người đại diện của một người nghèo cho khóa chính không được tiết lộ (không xác định?) của bạn.
Có liên quan:
- Làm cách nào để (hoặc tôi có thể) CHỌN DISTINCT trên nhiều cột?
- Nội dung nào dễ đọc hơn TỒN TẠI các truy vấn phụ?