在Access查询中,如果我想比较2个字段,则执行类似:-
的操作IIf([Field1] = [Field2], "Yes", "No") AS [MATCH]
是否可以比较3个字段,如果所有3个值都不相同,则结果应为“是”,否则结果应为“否”。
答案 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)
有两种方法可以做到:
在我的示例中,如果存在匹配项,则将其设置为“是”,因此您可能需要对其进行调整。我不确定是否真的不希望它说“是”。
使用宏生成器
要使用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