温馨提示×

Oracle NotIn与In的查询结果差异

小樊
81
2024-09-24 07:58:03
栏目: 云计算

在Oracle数据库中,NOT ININ 是两种用于过滤查询结果的子句,它们的使用场景和结果有所不同。

  1. IN 子句: IN 子句用于筛选出在指定集合中的记录。它允许你指定一个值列表,然后查询会返回字段值在这些列表中的所有记录。

例如:

SELECT * FROM employees WHERE department_id IN (10, 20, 30);

这个查询将返回employees表中department_id为10、20或30的所有记录。

  1. NOT IN 子句: NOT IN 子句用于筛选出不在指定集合中的记录。它同样允许你指定一个值列表,但查询会返回字段值不在这些列表中的所有记录。

例如:

SELECT * FROM employees WHERE department_id NOT IN (10, 20, 30);

这个查询将返回employees表中department_id不为10、20或30的所有记录。

查询结果差异:

  • 当使用IN子句时,如果某个记录的department_id值在指定的列表中(例如10、20、30),那么这条记录将被包含在查询结果中。
  • 当使用NOT IN子句时,如果某个记录的department_id值在指定的列表中(例如10、20、30),那么这条记录将不会被包含在查询结果中。

需要注意的是,当使用NOT IN子句时,如果指定的值列表为空(即没有值),那么查询结果可能不会返回任何记录,因为没有任何记录的字段值会等于空值。为了避免这种情况,可以使用NOT IN (SELECT column_name FROM table_name)的形式,这样即使值列表为空,查询也会返回所有记录。

0