【问题标题】:How to check 2 values in where condition如何在 where 条件下检查 2 个值
【发布时间】:2011-12-08 15:57:50
【问题描述】:

使用 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。

如何进行查询。

需要查询帮助

【问题讨论】:

  • 如果value1=300value2=400,查询的结果应该是什么?
  • @Lieven。我想检查两个表中的两个值。如何进行查询。在 table1 和 table2 中检查第一个值,在 table1 和 table2 中检查第二个值
  • 仍然理解原来的问题,但您是否研究过联接? en.wikipedia.org/wiki/Join_(SQL)
  • @Gopal - 您正在重申您的问题。这并没有回答我的问题,也没有让我更清楚你的问题。
  • 我认为如果您发布一个完整示例来说明您想要的内容会有所帮助:表格示例、value1value2 的示例值以及预期结果 基于给定的表格样本和样本值(最好是您希望的样子)。

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


【解决方案1】:

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

SELECT * FROM ...etc WHERE id=@id AND networktag=@networktag

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

希望对你有帮助

【讨论】:

  • 你是正确的使用参数来避免 SQL 注入。但也许对这个问题更具体一些会更好。
【解决方案2】:

如果我理解正确,您可以使用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)

【讨论】:

    【解决方案3】:
    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
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2017-02-28
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      相关资源
      最近更新 更多