0
我浏览过论坛。我测试了几种不同的方法。我只是无法得到这个工作。MySQL案例更新
目标:
更新,如果答案在以前的专栏中存在下一列
Q1在这一点上NULL,我想将它设置为1
Q2 IS NULL,我希望它留NULL,如果Q1为null,如果Q1有一个答案,更新此列1
问题:
这两列始终更新到1
次尝试:
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN Q1 IS NULL THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN IFNULL(Q1,'') = '' THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN COALESCE(Q1, '') = '' THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN Q1 IS NOT NULL THEN '1' ELSE IFNULL(Q2,NULL) END
WHERE UserID = 16
想法:
在我看来,MySQL的更新之前,第二列的第一列,即使他们是在相同的更新语句的执行进行评估。
“Q2 IS NULL,我希望它留NULL,如果Q1为null,如果Q1有一个答案,更新此列1” - 如果有什么'Q2 IS NOT NULL'?不要动它? –
还有['IF()'](http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_if)函数。 – tadman
正确的彼得,最终我有10列,我只是希望他们保持他们的价值,如果他们有一个,否则如果前一个问题没有响应为空或更新,如果它是队列中的下一个问题。 –