我在开始时看到了“相关问题”,但他们中的任何一个都与我正在尝试的完全相同。在MS Access中加入或子查询
如果可能,我希望我的查询可以更新。
哪个更好?
SELECT foobar.foo, foobar.bar
FROM foobar
WHERE foobar.baz IN (SELECT blahwoof.baz FROM blahwoof WHERE blahwoof.blah = 'value')
或者:
SELECT foobar.foo, foobar.bar
FROM foobar INNER JOIN blahwoof ON foobar.baz = blahwoof.baz
WHERE blahwoof.blah = 'value'
编辑
我完全合格以上的列名。我也意识到,我还没有完全指定它只是foobar
,我关心更新 - blahwoof
只是一个查找表。
编辑2
裸机如下(不实际的代码,很明显)模式:
table foobar
foo Autonumber PK
bar long FK ref gleeblesnort
baz long FK ref blahwoof
table blahwoof
baz Autonumber PK
blah text --'type' designation
我最终会从gleeblesnort拉动价值为好,但这不是一个直接这个查询的一部分。
答案取决于SQL语句。如果JOIN版本是可更新的,它可能会更快。如果不是,并且您需要更新,那么IN子查询是更好的版本。但是,这实际上只与绑定的访问表单(它非常相关)或走路和编辑记录集有关。 – 2011-01-08 03:20:33
它将以绑定的形式出现,但是 - 正如我在编辑中所说 - 它实际上只是需要可更新的`foobar.bar`。 – RolandTumble 2011-01-08 18:16:41
我认为我的回答有点仓促,因为@David让我思考。最好多了解一下模式--PK,FK,Unique Indexes ......内联可以多次返回foobar行,其中blahwoof.baz不是唯一的。 – Brett 2011-01-08 23:54:30