使用UPDATE将行标记为“已使用”

时间:2018-10-23 18:51:08

标签: mysql sql

我想通过SQL UPDATE查询来查看是否已使用ID。响应还应区分无效ID和已使用的ID。

我的例子:
将选民存储在SQL数据库中。 调用具有列Voters(唯一),vote_id(0或1)和voted(0或1)的表already_voted

  • 投票人x第一次投票,并且有效vote_id:选中voted
  • x第二次出现:通过选中already_voted拒绝。
  • x第三次出现:votedalready_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'

我也愿意采用完全不同的方法。感谢您的宝贵时间。

1 个答案:

答案 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。