使用IN条件

时间:2017-12-26 20:38:36

标签: 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") AS inTable2 INTO table3

我收到错误"行数"无法使用操作查询。 任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

然而,我并非100%确定这会解决您的问题。这将在SELECT查询中有效,但您的错误提示了不同类型的查询。

您可以尝试在table2(id)上添加索引。但是,我可以将其写成:

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

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

答案 1 :(得分: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