Điều gì về truy vấn hiện tại của bạn mà bạn không thích? Nếu bạn lo ngại rằng DISTINCT
trên hai cột không trả về các hoán vị duy nhất tại sao không thử nó?
Nó chắc chắn hoạt động như bạn có thể mong đợi trong Oracle.
SQL> select distinct deptno, job from emp
2 order by deptno, job
3 /
DEPTNO JOB
---------- ---------
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
9 rows selected.
SQL> select count(*) from (
2 select distinct deptno, job from emp
3 )
4 /
COUNT(*)
----------
9
SQL>
biên tập
Tôi đi vào một con hẻm mù với các phân tích nhưng câu trả lời thật rõ ràng ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
chỉnh sửa 2
Đưa ra các dữ liệu sau đây, giải pháp nối được cung cấp ở trên sẽ bị sai lệch:
col1 col2
---- ----
A AA
AA A
Vì vậy, chúng tôi bao gồm một dải phân cách ...
select col1 + '*' + col2 from t23
/
Rõ ràng dấu phân cách được chọn phải là một ký tự hoặc tập hợp các ký tự không bao giờ xuất hiện trong một trong hai cột.