当Title匹配使用以下方法包含在Include表中的子字符串时,我成功地(MSAccess - Query using a Table as Criteria)加入了一个Contacts表:
SELECT Contacts.Title
FROM Contacts
INNER JOIN Include ON Contacts.Title like '*' & Include.String & '*';
我认为我现在需要更进一步,使用排除表来排除一些标题。示例:上面的方法正确地抓住了“ CEO”,但也抓住了“ CEO Admin Assistant”,这是我不想要的。
以下返回所有行;猜测,因为其使用.AND。不是.OR。比较“排除”列表中的条目。
SELECT Contacts.Title
FROM Contacts
INNER JOIN Exclude ON Contacts.Title not like '*' & Exclude.String & '*';
任何建议如何使用表格完成所需的排除?
答案 0 :(得分:1)
在联接条件中使用ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items);
availableItems.removeif(item -> !item.available());
return availableItems;
和inner join
会产生一对多关系,因为对于“联系人”中的每一行, 很多记录中的联系人记录是 不喜欢 ,而只有一个记录是 就像 。
相反,如果您想继续使用计算出的联接条件(而不是对子查询使用not like
或not in
),建议您在排除表上使用not exists
和left join
子句中的is null
条件,以仅选择在“排除”中没有匹配记录的那些记录,例如:
where