我想通过SQL UPDATE
查询来查看是否已使用ID。响应还应区分无效ID和已使用的ID。
我的例子:
将选民存储在SQL数据库中。
调用具有列Voters
(唯一),vote_id
(0或1)和voted
(0或1)的表already_voted
:
x
第一次投票,并且有效vote_id
:选中voted
。x
第二次出现:通过选中already_voted
拒绝。x
第三次出现:voted
和already_voted
均被选中。没有更新。但是我想在vote_id
无效的情况下“不更新”。y
没有有效的vote_id
:没有更新。我不明白当voted
从0更改为1时,为什么already_voted
跳回0:
UPDATE Voters
SET already_voted = CASE WHEN voted = 1 THEN 1 END,
voted = CASE WHEN voted = 0 THEN 1 END
WHERE vote_id='12345'
我也愿意采用完全不同的方法。感谢您的宝贵时间。
答案 0 :(得分:0)
尝试一下:
UPDATE Voters
SET already_voted = CASE WHEN voted = 1 THEN 1 ELSE already_voted END,
voted = CASE WHEN voted = 0 THEN 1 ELSE voted END
WHERE vote_id='12345
当表决已为1并且您使用查询时,将使用case表达式的默认值(对于表决列),如果未另行指定,则为NULL。