【发布时间】:2013-01-26 19:29:27
【问题描述】:
我有一张表,其中有多个针对 FK 的条目。我想找出没有某些条目的 FK 的值,例如
我的表有以下条目。
现在,我想从这个表中过滤掉所有没有 ab3 或 ab4 的 FK。当然,我期望不同的值,即在这种情况下,结果将是 FK= 100 和 200。
我正在使用的查询是
select distinct(FK)
from table1
where column_entries != 'ab3'
or column_entries != 'ab4';
当然,此查询未获取所需的结果。
【问题讨论】:
-
你得到了什么结果,它与预期有何不同?
-
@StilesCrisis 我得到的结果是 FK=100, 200,300。这是因为 300 的第一行没有 ab3 或 ab4。
-
每条记录都满足条件,因为您使用了
or;'ab3' != 'ab3' or 'ab3' != 'ab4'和'ab4' != 'ab3' or 'ab4' != 'ab4'产生真值。使用and,或者为了更清楚地表达意图,使用not in(但比较列表不能包含null)。 -
@NikolaMarkovinović 我也尝试过,没有带来我想要的结果,即 FK = 100, 200。它仍然带来 300。
-
傻我。 Ab1 和 Ab2 满足条件。您需要选择具有ab3或ab4的fk,并使用外连接排除它们或不存在。