SQL Server查询组合

时间:2011-02-23 09:48:40

标签: sql-server vb.net

我有一个必须运行的查询,要求我根据另一个表中的字段值(我之前得到的)从表中获取行。

我目前这样做(简化)。

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

有没有办法可以将这两个查询结合起来,以便我得到一个或哪个?

如果您需要更多信息,请告诉我,不确定我是否已正确解释。

1 个答案:

答案 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'