MySQL-查询输出合并数据
因此,我有一个查询,用于查找和显示所有工作ID为SA_MAN和SA_REP的员工的部门、城市和国家名称,如下所示:MySQL-查询输出合并数据,mysql,sql,database,merge,output,Mysql,Sql,Database,Merge,Output,因此,我有一个查询,用于查找和显示所有工作ID为SA_MAN和SA_REP的员工的部门、城市和国家名称,如下所示: SELECT DEPARTMENT_NAME, CITY, COUNTRY_NAME FROM OEHR_EMPLOYEES INNER JOIN OEHR_DEPARTMENTS ON OEHR_EMPLOYEES.DEPARTMENT_ID=OEHR_DEPARTMENTS.DEPARTMENT_ID INNER JOIN OEHR_LOCATIONS ON OEHR_DEPA
SELECT DEPARTMENT_NAME, CITY, COUNTRY_NAME
FROM OEHR_EMPLOYEES
INNER JOIN OEHR_DEPARTMENTS ON OEHR_EMPLOYEES.DEPARTMENT_ID=OEHR_DEPARTMENTS.DEPARTMENT_ID
INNER JOIN OEHR_LOCATIONS ON OEHR_DEPARTMENTS.LOCATION_ID=OEHR_LOCATIONS.LOCATION_ID
INNER JOIN OEHR_COUNTRIES ON OEHR_LOCATIONS.COUNTRY_ID=OEHR_COUNTRIES.COUNTRY_ID
WHERE JOB_ID LIKE '%SA_MAN%' OR JOB_ID LIKE '%SA_REP%'
ORDER BY DEPARTMENT_NAME DESC
/
但是,所有员工都居住在一个部门中,因此对于具有SA_MAN或SA_REP的JOB_ID列中的每个员工,输出都是相同的。如图所示:
DEPARTMENT_NAME COUNTRY_NAME CITY
------------------------------ ---------------------------------------- ----------------------------
Sales United Kingdom Oxford
Sales United Kingdom Oxford
Sales United Kingdom Oxford
这将持续34行。简单地说,我如何使查询中的输出停止不必要的重复显示相同的数据,而只显示一行。如果查询被更改,并且仍然执行相同的操作,则我希望此功能也能正常工作,以便每个部门只显示一行包含指定员工的信息。FWIW,我发现这更易于阅读:
SELECT d.department_name
, l.city
, c.country_name
FROM oehr_employees e
JOIN oehr_departments d
ON d.department_id = e.department_id
JOIN oehr_locations l
ON l.location_id = d.location_id
JOIN oehr_countries c
ON c.country_id = l.country_id
WHERE job_id LIKE '%sa_man%'
OR job_id LIKE '%sa_rep%'
ORDER
BY department_name DESC
考虑修改您的工作id定义。这是您设计中的一个弱点。使用别名并相应地对列名进行适当限定是一个非常好的习惯。它使查询更容易阅读-明智地使用大写锁定键也是如此。尝试使用:选择distinc并查看感谢SELECT Distinct完成了任务,您是否想在下面输入以便我可以将其标记为答案?可以,但不是我的设计!这是一个作业,所以我不能改变实际的数据库。感谢您提供的有关如何更好地写出查询的提示。