比较Access查询中的两个以上字段

时间:2019-07-17 11:40:57

标签: ms-access

在Access查询中,如果我想比较2个字段,则执行类似:-

的操作
IIf([Field1] = [Field2], "Yes", "No") AS [MATCH]

是否可以比较3个字段,如果所有3个值都不相同,则结果应为“是”,否则结果应为“否”。

4 个答案:

答案 0 :(得分:1)

GoodJuJus的答案几乎在那里。

IIf(([[Field1] = [Field2] AND [Field2] = [Field3] AND [Field1] = [Field3]),“否”,“是”)为[匹配] 这将仅允许所有三个字段都不同的情况。

如果您要接受具有2个(但不是3个)相同值的案例,则将不起作用。

无论如何,反转逻辑可能会使阅读变得更好:

IIf(([[Field1] <> [Field2]和[Field2] <> [Field3]和[Field1] <> [Field3]),“是”,“否”)为[匹配]

答案 1 :(得分:1)

如果3个字段中的任何2个相等,则您希望结果为"No"
因此,请使用OR运算符:

IIf(
  [Field1] = [Field2] OR [Field1] = [Field3] OR [Field2] = [Field3], 
  "No", 
  "Yes"
) AS [MATCH]

答案 2 :(得分:0)

是的,您可以使用逻辑AND运算符扩展逻辑:

IIf(([Field1]=[Field2] And [Field2]=[Field3]),"Yes","No") AS [MATCH]

请注意,尽管在您的问题中您说过:“如果三个值全部不同,则结果应为是,否则结果应为否”。这与值相等的“是”的SQL查询矛盾。切换您的“ Y”,“ N”以适合。...

这将返回:

|-------|-------|-------|-------|
|Field1 |Field2 |Field3 |Result |
|-------|-------|-------|-------|
|1234   |1234   |1234   |Y      |
|1234   |aabb   |aabb   |N      |   
|1234   |we     |1234   |N      |
|-------------------------------|

答案 3 :(得分:0)

有两种方法可以做到:

在我的示例中,如果存在匹配项,则将其设置为“是”,因此您可能需要对其进行调整。我不确定是否真的不希望它说“是”。

使用宏生成器

Using the Macro Builder

要使用VBA:

Private Sub Command20_Click()
If Text1.Value = Text2.Value Then
step1 = "yes"
End If

If Text1.Value <> Text2.Value Then
step1 = "no"
End If


If Text1.Value = Text3.Value Then
step2 = "yes"
End If

If Text1.Value <> Text3.Value Then
step1 = "no"
End If


If step1 = step2 Then
Label25.Caption = "yes"
End If

If step1 <> step2 Then
Label25.Caption = "no"
End If