我在编写特定的Access更新查询时遇到了一些问题。
我需要比较table_1
field_1
和table_2
field_2
的数据:
table_2
field_3
应该用Yes
填充; table_2
中存在数据,但table_1
中没有数据,table_2
field_3
应该填充No
。 如何通过代码实现?
这是我到目前为止的代码。
UPDATE[Table2] INNER JOIN [Table 1] ON [Table2].[Field1]=[Table1].[Field1]
SET [Table2].[Field3]="No";
如果字段相等设置为No,我知道这会让我受益。但是我不知道如何编写其余命令来说明表2字段1是否不在表1字段1上,而在字段3中设置是。
答案 0 :(得分:1)
INNER JOIN
仅返回两个表中具有匹配值的记录。
RIGHT JOIN
将返回连接右侧表中的所有记录,并返回左侧表中的匹配记录-如果该值不存在,则返回NULL。
如果两个表中都有一个值,此查询将返回FALSE,否则返回TRUE。可以通过添加NOT
关键字-NOT Table1.Field_1 Is Null
SELECT Table1.Field_1, Table2.Field_2, Table1.Field_1 Is Null
FROM Table1 RIGHT JOIN Table2 ON Table1.Field_1 = Table2.Field_2
现在,如果Field_3
是一个布尔(Yes / No)字段,其格式设置为Yes/No
,而Lookup设置为Textbox
,则可以显示Yes / No。
下面的查询将上述SQL转换为UPDATE语句:
UPDATE Table1 RIGHT JOIN Table2 ON Table1.Field_1 = Table2.Field_2
SET Field_3 = NOT Table1.Field_1 Is Null
Field_3现在将保留-1/0,它等于TRUE / FALSE或YES / NO。
另一方面,如果Field_3
只是一个文本字段,则可以使用IIF
命令添加文本:
UPDATE Table1 RIGHT JOIN Table2 ON Table1.Field_1 = Table2.Field_2
SET Field_3 = IIF(Table1.Field_1 Is Null,'No','Yes')