使用IN条件的MS Access IIF

问题描述 投票:1回答:2

我试图在表中添加一个字段,指示该值是否存在于另一个表中。继承人我所拥有的

table1:     table2:
id          id  
1           2
2           4
3           6

最终结果:

table3:
id   inTable2
1    no
2    yes
3    no

这是我到目前为止所拥有的。

SELECT id, IIf(id In (SELECT id FROM table2 GROUP BY id), "yes", "no") AS inTable2 INTO table3

我收到错误“行数源不能使用操作查询”。任何帮助将不胜感激,谢谢!

sql ms-access
2个回答
1
投票

您可以使用LEFT JOIN来优化此查询:

SELECT t1.id, IIF(t2.id IS NULL, "yes", "no") INTO table3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.ID = t2.ID

1
投票

你很亲密group by是不必要的:

IIf(id In (SELECT id FROM table2), "yes", "no")

但是,我不是百分百肯定这会解决你的问题。这将在SELECT查询中工作,但您的错误提示了不同类型的查询。

你可以尝试在table2(id)上放一个索引。但是,我可能会这样写:

iif(exists (select 1 from table2 where table2.id = ?.id), "yes", "no")

这应该利用table2(id)的索引。

© www.soinside.com 2019 - 2024. All rights reserved.