关于子查询的问题,为什么需要 IN 子句

Question about subqueries, why there is a need for a IN clause

这是给定的代码:

SELECT * 
FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS 
WHERE SALARY > 4500);

为什么我们不能简单地写:

SELECT *
FROM CUSTOMERS
WHERE SALARY > 4500;

?

这是另一个代码:

SQL>

INSERT INTO CUSTOMERS_BKP
SELECT * FROM CUSTOMERS 
WHERE ID IN (SELECT ID 
FROM CUSTOMERS);

同样,我不明白这个子查询的意义,如果我写,它不会带来相同的结果,-

INSERT INTO CUSTOMERS_BKP
SELECT * FROM CUSTOMERS;

?

如果id不是唯一的,则两个查询之间存在差异。

第二个查询清楚returns所有薪水高于 4500 的客户。第一个查询returns所有薪水高于 4500 的客户 - 例如,如果 table 表示所有薪水变化的历史记录,您将获得一次薪水大于 4500 的客户的所有行。

如果id是唯一的,使用这样的in子句确实是多余的。