这是给定的代码:
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;
?
答案 0 :(得分:1)
如果id
不是唯一的,则两个查询之间是有区别的。
第二个查询清楚地返回所有薪水高于4500的客户。第一个查询返回所有薪水高于4500的行的客户-例如,如果该表代表所有薪金变化的历史记录,则一次获得薪水大于4500的客户的所有行。
如果id
是唯一的,那么使用这样的in
子句确实是多余的。