Sql MS访问IIF在条件中使用

Sql MS访问IIF在条件中使用,sql,ms-access,Sql,Ms Access,我正在尝试向表中添加一个字段,以指示该值是否存在于另一个表中。这是我的 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

我正在尝试向表中添加一个字段,以指示该值是否存在于另一个表中。这是我的

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
我收到一个错误,rowsource无法使用操作查询。 任何帮助都将不胜感激,谢谢

你很接近。分组方式是不必要的:

IIf(id In (SELECT id FROM table2), "yes", "no")
然而,我不是100%肯定这会解决你的问题。这将在SELECT查询中起作用,但您的错误表明存在不同类型的查询

您可以尝试在表2id上放置索引。但是,我可以这样写:

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

这应该利用table2id上的索引。

您可能可以使用左连接来优化此查询:


你在哪里用这个表达?一个经过计算的领域?我想是吧?我使用它就像选择id,iif。。如表2所示,这听起来像是一个疑问。如果是这样的话,共享完整的查询,我也许可以使用内部联接来优化它。更新后,我尝试使用内部联接,但我不知道如何从内部联接创建inTable2字段。哦,我正在创建一个包含结果的表,我忘了将该部分放入。如果表2有10mil条目,但只有10k个唯一id,那么该组会加快进程吗?我认为表2中选择id中的id是问题所在。我以前从来没有用WHERE条件来表示IIF条件,有其他选择吗?谢谢。出于好奇,您知道是否可以使用if语句吗?JET/ACE SQL没有if语句,因此这将是一个否。我的意思是,就像我以前尝试的那样,使用iif…不,您不能在iif中使用联接。你可以使用一个数据帐户或类似的东西,但与这种方式相比,这将是非常缓慢的。如果这回答了你的问题,你可以通过以下方式来说明。这样,其他读者就知道问题已经得到了回答,你和我都会得到一笔代表奖金。
SELECT t1.id, IIF(t2.id IS NULL, "yes", "no") INTO table3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.ID = t2.ID