关于子查询的问题,为什么需要 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
子句确实是多余的。
这是给定的代码:
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
子句确实是多余的。