我在MySQL中有一个表如下.
Id Designation Years Employee
1 Soft.Egr 2000-2005 A
2 Soft.Egr 2000-2005 B
3 Soft.Egr 2000-2005 C
4 Sr.Soft.Egr 2005-2010 A
5 Sr.Soft.Egr 2005-2010 B
6 Pro.Mgr 2010-2012 A
Run Code Online (Sandbox Code Playgroud)
我需要让那些担任Soft.Egr和Sr.Soft.Egr以及Pro.Mgr的员工.在查询中无法使用IN或多个AND.这该怎么做??
小智 29
单程:
select Employee
from job_history
where Designation in ('Soft.Egr','Sr.Soft.Egr','Pro.Mgr')
group by Employee
having count(distinct Designation) = 3
Run Code Online (Sandbox Code Playgroud)
你可能真正想要的是关系分工,即使你的运动要求禁止使用AND(无论出于何种原因?).这很棘手,但可以在SQL中正确表达.
prosa中的关系划分意味着:查找在employees表中为所有现有指定创建记录的员工.或者在SQL中:
SELECT DISTINCT E1.Employee FROM Employees E1
WHERE NOT EXISTS (
SELECT 1 FROM Employees E2
WHERE NOT EXISTS (
SELECT 1 FROM Employees E3
WHERE E3.Employee = E1.Employee
AND E3.Designation = E2.Designation
)
)
Run Code Online (Sandbox Code Playgroud)
要查看上面的查询,请考虑此SQLFiddle
可以在此处找到解释关系划分的良好资源:http: //www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division
| 归档时间: |
|
| 查看次数: |
73997 次 |
| 最近记录: |