我有两张表同一把钥匙。我想,在一个SELECT中,没有后续内部表中的数据操作,检索左侧表中右侧表中没有CORRESPONDING记录的所有记录(即来自右边的桌子是空的。)
最合乎逻辑的做法是以下内容,但这不会编译,因为您可能不会在WHERE子句的外部联接中使用右侧的字段:
select e~equnr into lt_equnr
from equi as e
left outer join eqbs as b on e~equnr = b~equnr
where e~matnr = material
and b~b_werk = space.
看起来很有前途和编译的替代方法是这样,但它不起作用,因为它甚至会带回右边表中具有相应条目的那些:
select e~equnr into table lt_equnr
from equi as e
left outer join eqbs as b on e~equnr = b~equnr
and b~b_werk = space
where e~matnr = material.
此选项仅从右侧清空字段,但仍包含结果集中的所有内容。这可以通过从右侧选择字段来确认。
另一个选项,也不起作用,是使用子选择:
select e~equnr into table lt_equnr
from equi as e
where e~matnr = material
and e~equnr not in ( select equnr from equi where equnr = e~equnr ).
答案 0 :(得分:1)
正如对该问题的评论所指出的那样,我的代码中存在一个错误。在我的子选择中,我使用的是LHS表。 (我的子选择是引用EQUI而不是EQBS)。
通过修复我的子选择,它可以工作:
select e~equnr into table lt_equnr
up to max_entries rows
from equi as e
where e~matnr = material
and e~equnr not in ( select equnr from eqbs where equnr = e~equnr ).
答案 1 :(得分:0)
您可以使用子查询来尝试:
SELECT e~equnr INTO TABLE lt_equnr
FROM equi AS e
WHERE e~matnr = material
AND NOT EXISTS ( SELECT b~equnr
FROM eqbs as b
WHERE b~equnr = e~equnr ).