Mysql SQL选择不在一起工作的所有ID号对
给出以下表格:Mysql SQL选择不在一起工作的所有ID号对,mysql,sql,relational-database,Mysql,Sql,Relational Database,给出以下表格: EMPLOYEE: ID, ProjectNum, Hours 在ID和ProjectNum一起构成主键的地方,我希望能够输出所有的ID号对,这样它们就不会在任何项目上一起工作。员工可以在多个项目上工作 SELECT DISTINCT e1.id as emp1, e2.id as emp2 FROM Employee e1 JOIN Employee e2 ON e1.id < e2.id WHERE not exist ( SELEC
EMPLOYEE: ID, ProjectNum, Hours
在ID和ProjectNum一起构成主键的地方,我希望能够输出所有的ID号对,这样它们就不会在任何项目上一起工作。员工可以在多个项目上工作
SELECT DISTINCT
e1.id as emp1,
e2.id as emp2
FROM Employee e1
JOIN Employee e2
ON e1.id < e2.id
WHERE not exist ( SELECT 1
FROM Employee r1
JOIN Employee r2
ON r1.id < r2.id
AND r1.ProjectNum = r2.ProjectNum
AND e1.ID = r1.ID
AND e2.ID = r2.ID
)
我相信这可以通过表本身的某种连接来实现,但我正在努力解决如何只输出ProjectNum1 ProjectNum2的结果,因为很明显,这可能是一个项目的结果,而不是另一个项目的结果。您搜索所有对,并过滤在一个项目中一起工作的结果
SELECT DISTINCT
e1.id as emp1,
e2.id as emp2
FROM Employee e1
JOIN Employee e2
ON e1.id < e2.id
WHERE not exist ( SELECT 1
FROM Employee r1
JOIN Employee r2
ON r1.id < r2.id
AND r1.ProjectNum = r2.ProjectNum
AND e1.ID = r1.ID
AND e2.ID = r2.ID
)
使用e1.id
SELECT DISTINCT
e1.id as emp1,
e2.id as emp2
FROM Employee e1
JOIN Employee e2
ON e1.id < e2.id
WHERE not exist ( SELECT 1
FROM Employee r1
JOIN Employee r2
ON r1.id < r2.id
AND r1.ProjectNum = r2.ProjectNum
AND e1.ID = r1.ID
AND e2.ID = r2.ID
)
您使用e1.id