我一直在努力解决这个难题,我最后一点都被困住了。我在SQL查询中有一个SQL语句:
UPDATE courses SET pid=? WHERE course_name=?;
传递参数并按顺序替换?s :( query,“Biology”,345533)。
如何更改我的SQL语法(即切换pid =?和course_name =?的顺序),将“Biology”指向course_name,将345533指向pid?
规则:只允许一(1)条SQL语句。无法更改参数的顺序。
答案 0 :(得分:1)
假设Cade Roux在所需的方面走在正确的轨道上,你可以尝试:
Update c
Set pid = Case
When course_name = ? Then ?
Else pid
End
答案 1 :(得分:0)
不确定c是否是ANSI规则的可更新集,但我会在一分钟内在真实平台中尝试...
WITH c AS (
SELECT *
FROM courses
WHERE course_name = ?
)
UPDATE c
SET pid = ?
这似乎在T-SQL(SQL Server 2005和up支持公用表表达式)中运行良好,并且http://data.stackexchange.com/stackoverflow/q/100124/处有一个可运行的示例
答案 2 :(得分:0)
UPDATE C SET C.pid=D.pid
FROM COURSES C
JOIN (SELECT ? AS course_name, ? AS pid) D ON D.course_name = C.course_name
这适用于SQL Server(2008),但据我所知,它不符合ANSI标准。