如何检查where条件中的2个值

时间:2011-10-16 09:28:45

标签: sql sql-server sql-server-2005

使用SQL Server

我想检查两个表中的两个值。

我有两个整数值(value1,value2)

表1

ID Value

001 200
002 300
...

表2

ID Value

001 300
002 400
...

现在我想检查value1和value2是否与table1值和table2值匹配

尝试查询

SELECT value from table1 Where  id = '" & textbox1.Text & "'

条件

我想检查value1是否与table1或table2匹配,然后value2与table1或table2匹配。如果匹配则显示该值,否则为null。

如何进行查询。

需要查询帮助

3 个答案:

答案 0 :(得分:1)

SELECT
    MAX(T1.ID)
FROM
    (
    SELECT TOP 1 ID
    FROM table1 WHERE value = @Value1
    ORDER BY ID
    ) T1
    JOIN
    (
    SELECT TOP 1 ID
    FROM table2 WHERE value = @Value2
    ORDER BY ID
    ) T2 ON T1.ID = T2.ID

注意:

最后一点,如果您想要任何匹配

SELECT
   MAX(1)
FROM
    (
    SELECT TOP 1 ID
    FROM table1 WHERE value = @Value1
    ORDER BY ID
    ) T1
    CROSS JOIN
    (
    SELECT TOP 1 ID
    FROM table2 WHERE value = @Value2
    ORDER BY ID
    ) T2

答案 1 :(得分:0)

通常我将查询作为字符串添加而不连接它..

“SELECt * FROM ... etc WHERE id = @ id AND networktag = @netnettag”

然后使用命令参数(即C#中的SqlCommand实例)处理ID 这主要是使用c#而我认为在VB中很容易做到

希望这有帮助

答案 2 :(得分:0)

如果我理解正确,您可以使用UNION来完成此任务。

SELECT  *
FROM    (
          SELECT ID, Value, 'Table1' AS Source
          FROM   Table1
          UNION ALL
          SELECT ID, Value, 'Table2'
          FROM   Table2
        ) u
WHERE   u.Value IN (@Value1, @Value2)