mysql - 连接两个具有不同表的数据以选择唯一的职位
问题描述
我有两张桌子:员工和办公室。
我想创建一个包含“员工”的所有列的视图,但只有两列“办公室”。
另外,我只想选择具有独特职称的员工。我正在尝试使用以下代码执行此操作,但它返回以下错误:
#1248 - 每个派生表都必须有自己的别名。
我正在使用以下查询:
SELECT employees.*, offices.officeCode, offices.phone
FROM (
SELECT DISTINCT employees.jobTitle
)
JOIN offices ON employees.officeCode = offices.officeCode
办公室表:
员工表:
期望的结果:
employeeNumber|jobTitle|firstName|officeCode|city|state|country
仅包括示例图像中的前 6 名员工(因为“销售代表”是重复的职位名称,因此不包括具有它的员工)。
解决方案
当前查询存在许多问题:
- 如错误所示,派生表或子查询没有别名。
- 没有子句
SELECT
的派生表中的不完整查询:FROM
(SELECT distinct emplyees.jobtitle)
- 从查询的数据源中未引用的表中检索列(即,
employees
)
因此,请考虑通过对唯一职位名称的计数检查来连接这两个表:
SELECT e.*, o.officeCode, o.phone
FROM employees e
INNER JOIN offices o
ON e.officeCode = o.officeCode
WHERE e.jobTitle IN
(SELECT sub.jobTitle
FROM employees sub
GROUP BY sub.jobTitle
HAVING COUNT(*) = 1)
推荐阅读
- r - R:每组时间序列的平均年数
- delphi - 重构建议,使用哪种设计模式
- spring-boot - 在生成 JWT 令牌时,身份验证方法在 Java Spring Boot 中给出内部服务器错误
- jquery - 如何将对象属性从一个数组对象推送到 jquery 中的另一个数组对象?
- powershell - 从 Get-LocalGroupMember 解析为 Net User
/领域 - azure-devops - Azure DevOps 发布转换/替换令牌
- excel - 条件格式要么突出显示错误的单元格,要么不突出显示正确的单元格
- php - 如何避免构造被调用两次
- c++ - c++ boost json ptree中的自定义get方法
- python - file_id 如何在 Telethon 中使用机器人发送文件?