如何在 PostgreSQL 中获取 ID?
How to get ID in PostgreSQL?
我正在学习 SQL 使用 Postgres。在这里,我想获取员工没有任何单元格 phone 的员工 ID,键入 'C',答案应该是 3, 4, 5
,因为这些员工没有单元格 [=21] =].我尝试了以下查询,但它没有给我正确的答案,而是给了我 1, 2, 3, 4, 5
SELECT employeeID
FROM PhoneInfo
WHERE Type != 'C';
我做错了什么?
因为有些行 Type <> 'C'
来自 employeeID 1 或 5。
正如我们从您的情况中看到的那样,我们将从 employeeid 为 1 的行中获取一些行。
如果你想获得 employeeID
其中不包含任何 Type = 'C'
我们可以尝试使用 NOT EXISTS
子查询
SELECT employeeID
FROM PhoneInfo t1
WHERE NOT EXISTS (
SELECT
FROM PhoneInfo tt
WHERE t1.employeeID = tt.employeeID
AND Type = 'C'
)
如果你想获得没有重复行的 employeeID
,我们可以尝试使用 DISTINCT
,它可能看起来像你预期的那样。
SELECT DISTINCT employeeID
FROM PhoneInfo
WHERE employeeID NOT IN (
SELECT employeeID
FROM PhoneInfo
WHERE Type = 'C'
);
这个问题会给你正确的答案。在这里,我们试图找到类型为 C 的 employeeID 列表中不存在的 employeeID。希望对您有所帮助!
最简单的方法可能是使用集合操作:
SELECT employeeid FROM phoneinfo
EXCEPT
SELECT employeeid FROM phoneinfo WHERE type = 'C';
我正在学习 SQL 使用 Postgres。在这里,我想获取员工没有任何单元格 phone 的员工 ID,键入 'C',答案应该是 3, 4, 5
,因为这些员工没有单元格 [=21] =].我尝试了以下查询,但它没有给我正确的答案,而是给了我 1, 2, 3, 4, 5
SELECT employeeID
FROM PhoneInfo
WHERE Type != 'C';
我做错了什么?
因为有些行 Type <> 'C'
来自 employeeID 1 或 5。
正如我们从您的情况中看到的那样,我们将从 employeeid 为 1 的行中获取一些行。
如果你想获得 employeeID
其中不包含任何 Type = 'C'
我们可以尝试使用 NOT EXISTS
子查询
SELECT employeeID
FROM PhoneInfo t1
WHERE NOT EXISTS (
SELECT
FROM PhoneInfo tt
WHERE t1.employeeID = tt.employeeID
AND Type = 'C'
)
如果你想获得没有重复行的 employeeID
,我们可以尝试使用 DISTINCT
,它可能看起来像你预期的那样。
SELECT DISTINCT employeeID
FROM PhoneInfo
WHERE employeeID NOT IN (
SELECT employeeID
FROM PhoneInfo
WHERE Type = 'C'
);
这个问题会给你正确的答案。在这里,我们试图找到类型为 C 的 employeeID 列表中不存在的 employeeID。希望对您有所帮助!
最简单的方法可能是使用集合操作:
SELECT employeeid FROM phoneinfo
EXCEPT
SELECT employeeid FROM phoneinfo WHERE type = 'C';