我有一个必须运行的查询,要求我根据另一个表中的字段值(我之前得到的)从表中获取行。
我目前这样做(简化)。
cmd.commandtext = "SELECT * FROM TableB WHERE FieldC = '" & TableA.FieldF & "'"
cmdReader = cmd.executereader()
If cmdReader.HasRows Then
Do something
Else
cmdReader.close()
cmd.commandtext = "SELECT * FROM TableB WHERE FieldC = 'Generic'"
cmdReader = cmd.executereader()
If cmdReader.HasRows Then
Do something
Else
Do something
End If
End If
有没有办法可以将这两个查询结合起来,以便我得到一个或哪个?
如果您需要更多信息,请告诉我,不确定我是否已正确解释。
答案 0 :(得分:2)
尝试:
WHERE FieldC = '" & TableA.FieldF & "' OR FieldC = 'Generic'
或者
WHERE FieldC IN ('" & TableA.FieldF & "', 'Generic')
更好的是,使用参数:
WHERE FieldC IN (@FieldF, 'Generic')
...
cmd.Parameters.Add("@FieldF", TableA.FieldF);
编辑:要在一个查询中仅选择一组行,您可以:
SELECT *
FROM TableB
WHERE FieldC = @FieldF
UNION ALL
SELECT *
FROM TableB
WHERE NOT EXISTS (SELECT * FROM TableB WHERE FieldC = @FieldF)
AND FieldC = 'Generic'