我想通过在 mySQL 中使用 UPDATE CASE 方案在一个查询中更新多行。 我正在使用 python 和 Django 构建我的网络应用程序。这是我的代码:
UPDATE order
SET priority_number =
CASE priority_number
WHEN 2 THEN 3
WHEN 3 THEN 4
WHEN 1 THEN 5
WHEN 4 THEN 2
WHEN 5 THEN 1
END
所以这个单一查询将按照我的意愿更新所有字段。我的问题是,如果我要更新的行数未知,我该如何编程?假设所有这些数字都来自一个数组,我将把它传递到我的 View 中,但我不知道我需要写多少 WHEN 和 THEN 语句?感谢您的帮助!
最佳答案
您可以使用条件 Case
以编程方式构建查询和 When
.
所以,例如:
from django.db.models import Case, When
# Make a list of When expressions
when_list = [When(priority_number=2, then=3),
When(priority_number=3, then=4)]
# Use in a query of your choice, as an example:
Model.objects.update(
priority_number=Case(
*when_list))
关于python - 如何使用 Python 和 Django 以编程方式在 MySQL 更新上执行 WHEN 和 THEN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353387/