xem xét bảng sau:SQL: Loại bỏ hồ sơ trùng lặp - mặc dù loại khác nhau
TAB6
A B C
---------- ---------- -
1 2 A
2 1 A
2 3 C
3 4 D
tôi xem xét, các hồ sơ {1,2, A} và {2, 1, A} như trùng lặp. Tôi cần chọn và tạo ra bộ hồ sơ dưới đây:
A B C A B C
---------- ---------- - ---------- ---------- -
1 2 A or 2 1 A
2 3 C 2 3 C
3 4 D 3 4 D
Tôi đã thử các truy vấn dưới đây. Nhưng không có kết quả.
select t1.*
from t6 t1
, t6 t2
where t1.a <> t2.b
and t1.b <> t2.a
and t1.rowid <> t2.rowid
/
A B C
---------- ---------- -
1 2 A
2 1 A
2 1 A
2 3 C
3 4 D
3 4 D
6 rows selected.
Hoặc ngay cả điều này:
select *
from t6 t1
where exists (select * from t6 t2 where t1.a <> t2.b and t1.b <> t2.a)
/
A B C
---------- ---------- -
1 2 A
2 1 A
2 3 C
3 4 D
Cả hai đã không làm việc.
Cơ sở dữ liệu sẽ là Oracle 10g. Tìm kiếm một giải pháp SQL thuần túy. Mọi trợ giúp đều được đánh giá cao.
biết chính xác là bạn đang cố gắng để thực hiện? Vui lòng mở rộng về điều này. – simchona
Tôi cần một SQL để tạo tập bản ghi {1, 2, A}, {2, 3, C} và {3, 4, D}. Đối với tôi {1, 2, A} và {2, 1, A} là các bản ghi trùng lặp và tập kết quả chỉ có một bộ (hoặc {1, 2, A} hoặc {2, 1, A}, nhưng không phải là cả hai) –
Chỉ cần rõ ràng, bằng cách "xóa", bạn có nghĩa là * bộ lọc từ tập hợp kết quả * thay vì * xóa *. – APC