gpt4 book ai didi

具有多个 WHERE(关系)条件的 SQL UPDATE

转载 作者:行者123 更新时间:2023-12-04 19:58:28 26 4
gpt4 key购买 nike

我想知道是否可以在 oracle SQL 数据库中执行这样的更新:

UPDATE mark
SET
mark=
CASE
WHEN mark.val<= 5
THEN val*1.1
ELSE val END
WHERE mark.id_classes = classes.id_classes
AND classes.ID_subject = subject.ID_subject
AND subject.ID_subject = 5;

SQL 开发人员在这部分返回错误:

WHERE mark.id_classes = classes.id_classes 
AND classes.ID_subject = subject.ID_subject
AND subject.ID_subject = 5;

所以我想不可能做出如此复杂的条件,那么有没有其他方法可以做到这一点?

尝试更多类似 SELECT 的条件可能很愚蠢,但另一方面我不明白它不起作用的原因。

最佳答案

您可以使用子查询:

UPDATE mark
SET mark = val * 1.1
WHERE mark.val <= 5 AND
EXISTS (SELECT 1
FROM classes c JOIN
subjects s
ON c.ID_subject = s.ID_subject
WHERE mark.id_classes = c.id_classes AND
s.ID_subject = 5
);

请注意,我将 CASE 条件移到了 WHERE 子句中,因此只更新需要更新的行。

关于具有多个 WHERE(关系)条件的 SQL UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55881289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com