mysql - SQL 选择它们不一起工作的所有 ID 号对
问题描述
给定以下形式的表格:
EMPLOYEE: ID, ProjectNum, Hours
在 ID 和 ProjectNum 一起构成主键的情况下,我希望能够输出所有成对的 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 < e2.id
而不是e1.id <> e2.id
这样你就不会得到反转对
推荐阅读
- python - 有没有办法使用 python 使用请求下载,一个 csv 的 url 就像'Blob:https'
- python - 跟踪功能无法按预期使用导入的文件
- git - 远程:错误:GH001:检测到大文件。您可能想尝试 Git 大文件存储 - https://git-lfs.github.com
- ssl - 当服务器验证客户端证书失败时,tls 1.3 客户端不报告握手失败
- c++ - 为什么我的双数组没有初始化为 0?
- python - 即使在第二次定义元素后也收到过时元素错误
- c++ - 如何在 c 或 rust 中拆分和加入文件?
- acumatica - 带付款的休息 API SalesOrder
- flutter - Flutter:持久化页面状态
- node.js - 使节点应用程序在 NX 工作区中可执行