带有空子查询的 IN 行为

Behavior of IN with empty subquery

我想 select 来自 table KNA1 的每个客户,这些客户在 table KNBK.

中没有任何条目

所以我做了一个 select 查询,它应该为我做这个:

SELECT-OPTIONS: s_kn_nr FOR kna1-kunnr.
SELECT-OPTIONS: s_kn_okd FOR kna1-ktokd.

SELECT * FROM kna1
    INTO TABLE @DATA(ls_kna1)
    WHERE kunnr IN @s_kn_nr
      AND ktokd IN @s_kn_okd
      and kunnr not in ( select kunnr from knbk where kunnr in @s_kr_nr )

现在我的问题是,select 查询是否以与空 select 选项相同的方式处理空子 select 并且只是 select 所有内容?

答案很简单:没有。

这样的子查询returns集合和IN在这里的作用就如同属于集合或不属于集合的数学运算。所以如果集合为空则没有元素属于它。