UPDATE empInfo
SET lastName = (SELECT lastName FROM tmp_empInfo
WHERE tmp_empInfo.id = empInfo.id),firstName =
(SELECT firstName FROM tmp_empInfo WHERE
tmp_empInfo.id = empInfo.id)
WHERE ((SELECT COUNT(*) FROM tmp_empInfo
WHERE tmp_empInfo.id = empInfo.id) > 0)
我正在更新上述查询中的两列。我想在数组中传递列名和表名,并使SET参数的查询动态化。有什么想法吗?
答案 0 :(得分:0)
您尝试过吗?
def update_task(conn, targets, task):
sql = f''' UPDATE systemData
SET {targets}
WHERE id = ?'''
cur = conn.cursor()
cur.execute(sql, task)
conn.commit()
target = 'timesWater = ?, timesMinerals = ?'
task = (5, 2, 1)
update_task(conn, target, task)
答案 1 :(得分:-1)
替换查询
update empInfo
Set lastName = tmp.lastName,
firstName = tmp.firstName
from tmp_empInfo tmp
where empInfo.id = tmp.id
答案 2 :(得分:-1)
在非常复杂的场景中,您最好使用所谓的动态sql,您可以将查询构造为字符串,然后将其作为sql执行。在这种情况下,添加对动态参数的支持要容易得多。以下链接为您提供基本的想法sp_executesql
我们动态提供表名的示例:
CREATE PROCEDURE general_select1 @tblname sysname,
@key varchar(10) AS
DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT col1, col2, col3 ' +
' FROM dbo.' + quotename(@tblname) +
' WHERE keycol = @key'
EXEC sp_executesql @sql, N'@key varchar(10)', @key