将2个查询合并为1

时间:2016-11-02 16:10:35

标签: c# sql sql-server ssis

目前,我根据另一个查询的结果动态构建一个SQL查询,该查询在不久之前执行。

第一次查询:

string query = "Update tab2 SET";

if (!Row.col1_IsNull)
{
    query = query + " anotherCol1 = " + "'" + Row.col1 + "'" + ", ";
}
if (!Row.col2_IsNull)
{
    query = query + " anotherCol2 = " + "'" + Row.col2 + "'" + ", ";
}
else
{
    query = query + " comment = " + "'" + "some text..." + "'" + ", ";
}

query = query + " WHERE (";

if (!Row.col3_IsNull)
{
    query = query + " anotherCol3 " + Row.col4 + "'" + Row.col5 + "' AND";
}
if (!Row.col6_IsNull)
{
    if (Row.col6 == "empty")
    {
        query = query + " col6 is null AND";
    }
    else if (Row.col6 == "not empty")
    {
        query = query + " col6 is not null AND";
    }
}
//[...]

第二个动态构建的查询:

Update tab2 set
    anotherCol1 = 'abc',
    anotherCol2 = 'def',
WHERE 
    (col3 = 'test')

现在我在想,是否可以将两个查询合并为一个查询。

有什么类似我可以使用的if语句吗?

更新

可能的最终查询可能如下:

 noShip: true

1 个答案:

答案 0 :(得分:2)

使用UPDATE语法中的JOIN

UPDATE t2
SET    t2.anotherCol1 = COALESCE(t1.Col1,t2.anotherCol1),
       t2.anotherCol2 = COALESCE(t1.Col2,t2.anotherCol2)
FROM   tab2 t2
       INNER JOIN tab1 t1
               ON t1.col3 = t2.col3 

这只是一个例子,您可能需要更改集合中的列的使用情况。 Where子句基于您的要求