gpt4 book ai didi

sql - 使用多个条件和多行进行更新

转载 作者:行者123 更新时间:2023-12-04 23:43:09 26 4
gpt4 key购买 nike

我希望能够使用一条 UPDATE 语句更新表,但在其中包含各种条件。以下代码包含一个表 test_table,其中包含 main_id,其中可以包含 product_case id 和 customer_case id。我希望能够检查 CASETABLE 表,如果存在与 main_id 关联的“PC”案例或“CC”案例,则更新相应的字段。

UPDATE 
test_table tt
SET
tt.product_case = CASE WHEN ct.TYPE = 'PC' THEN ct.ID ELSE tt_.product_case END,
tt.customer_case = CASE WHEN ct.TYPE = 'CC' THEN ct.ID ELSE tt.customer_case END
FROM
CASETABLE ct
WHERE
ct.STATUS = 'ACTIVE'
AND ct.MAINRECORD = tt.main_id

显然,如果主 WHERE 返回 2 行,这将不起作用,因为每种情况都会尝试设置正确的值,然后再次设置其原始值,从而导致 SQL 错误 21506(尝试为同一行设置多次)。如果不使用两个单独的 UPDATE 语句,我该如何做到这一点?

最佳答案

请试试这个

UPDATE 
tt
SET
tt.product_case = CASE WHEN ct.TYPE = 'PC' THEN ct.ID ELSE tt_.product_case END,
tt.customer_case = CASE WHEN ct.TYPE = 'CC' THEN ct.ID ELSE tt.customer_case END
FROM
test_table tt
INNER JOIN CASETABLE ct
ON ct.MAINRECORD = tt.main_id
WHERE
ct.STATUS = 'ACTIVE'

关于sql - 使用多个条件和多行进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55000373/

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