Microsoft Access查询根据条件s用两个不同的值填充字段

时间:2018-06-27 11:58:58

标签: ms-access

我在编写特定的Access更新查询时遇到了一些问题。

我需要比较table_1 field_1table_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中设置是。

1 个答案:

答案 0 :(得分:1)

INNER JOIN仅返回两个表中具有匹配值的记录。
RIGHT JOIN将返回连接右侧表中的所有记录,并返回左侧表中的匹配记录-如果该值不存在,则返回NULL。

如果两个表中都有一个值,此查询将返回FALSE,否则返回TRUE。可以通过添加NOT关键字-NOT Table1.Field_1 Is Null

来反转TRUE / FALSE
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')