目前,我根据另一个查询的结果动态构建一个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
答案 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子句基于您的要求