我浏览了论坛。我已经测试了几种不同的方法。我无法让它发挥作用。
如果上一栏中存在答案,则更新下一栏
Q1此时为空,我希望将其设置为1
Q2 IS为空,如果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在第二列被评估之前更新第一列,即使它们在同一更新语句执行中。
答案 0 :(得分:1)
订单很重要。首先设置Q2(因为它检查Q1的先前值),然后设置Q1。
UPDATE Story1_Responses
SET Q2 = CASE WHEN Q1 IS NULL THEN NULL ELSE '1' END,
Q1 = IFNULL(Q1,'1')
WHERE UserID = 16;