0

このような重複を出力から削除するステートメントを知っている人はいますか?

DEPARTMENT_ID  DEPARTMENT_NAME                FULL_NAME               JOB_TITLE      
 50            Shipping                  Alana Walsh          Sales Representative
 50            Shipping                  Alana Walsh          Sales Representative  
 50            Shipping                  Winston Taylor       Sales Manager   
 50            Shipping                  Winston Taylor       Sales Manager
 60              IT                      Alexander Hunold     Sales Representative
 60              IT                      Alexander Hunold     Sales Representative

これが私がこれまでに持っているものです:

select employees.department_id, departments.department_name, first_name || ' ' || last_name as full_name, job_title
from departments, employees, jobs
where employees.department_id = departments.department_id
and job_title like '%Sales%'
order by job_title, full_name;
4

3 に答える 3

2

SELECT DISTINCT重複を削除するために使用できます。

select distinct employees.department_id, departments.department_name, first_name || ' ' || last_name as full_name, job_title
from departments, employees, jobs
where employees.department_id = departments.department_id
and job_title like '%Sales%'
order by job_title, full_name;

または、各列でGROUPBYを使用することもできます

select employees.department_id, departments.department_name, first_name || ' ' || last_name as full_name, job_title
from departments, employees, jobs
where employees.department_id = departments.department_id
and job_title like '%Sales%'
group by employees.department_id, departments.department_name, first_name || ' ' || last_name as full_name, job_title
order by job_title, full_name;

また、あなたは仕事への参加を逃しているように見えますか?これが、クエリが重複した結果を返す理由である可能性があります。

可能であれば、明示的な結合構文を使用することもお勧めします。

FROM departments
 INNER JOIN employees ON employees.department_id = departments.department_id
于 2013-03-07T22:05:36.027 に答える
0

DISTINCTMatt Busche が示すように、a を使用できます。

しかし、多くの場合、DISTINCT結合条件が欠落しているという事実を隠すために、間違って を追加する人がいます。この場合、departmentsemployees、およびの 3 つのテーブルを結合しjobsていますが、結合条件は 1 つしかありません。したがって、jobsテーブルへのデカルト結合を行っていますが、これはほぼ確実に望んでいるものではありません。jobsこのテーブルは他の 2 つのテーブルとどのように関連していますか? とテーブルjob_idの両方に があると仮定すると、次のようなものが必要になります。jobsemployees

select employees.department_id, 
       departments.department_name, 
       first_name || ' ' || last_name as full_name, 
       job_title
  from departments, employees, jobs
 where employees.department_id = departments.department_id
   and jobs.job_id             = employees.job_id
   and job_title            like '%Sales%'
 order by job_title, full_name;
于 2013-03-07T22:12:09.930 に答える