gpt4 book ai didi

mysql - SQL更新案例中需要if/else语句

转载 作者:行者123 更新时间:2023-11-29 08:58:55 26 4
gpt4 key购买 nike

如何使用一个 Update 语句更新数据库中情况不同的多条记录。

refundNumber = CASE _
WHEN salesRecords.invNo='1' AND itemNo='250' AND length(refundNumber) > 1 THEN _
concat(refundNumber, ', 88' ) Else '88' _
WHEN salesRecords.invNo='1' AND itemNo='7095' AND length(refundNumber) > 1 THEN _
concat(refundNumber, ', 88' ) Else '88' _
END

这失败了,应该看起来像:

refundNumber = CASE _
WHEN invNo='1' AND itemNo='250' AND length(refundNumber) > 1 THEN _
concat(refundNumber, ', 88' ) _
WHEN invNo='1' AND itemNo='7095' AND length(refundNumber) > 1 THEN _
concat(refundNumber, ', 88' ) Else '88' _
END

不同之处在于 Else 出现在最后。

但它将所有记录上的 refundNumber 设置为 88。

我想要做的是将一个值添加到名为 refundNumber 的字段中,其中 invNo = 'currentInvoiceNumber' AND itemNo = 'itemNumber '

但是,由于 refundNumber 是一个文本字段,其中包含逗号分隔的列表,我试图确定该字段是否为空,如果是,只需输入数字,如果不是,请将前面带有逗号的数字附加到现有字段内容中。因此,length(refundNumber) > 1 THEN concat(refundNumber, ', 88' ) 位。

我还没有测试过它,但我相信我需要的 VB 逻辑是:

IF invNo='1' And itemNo='250' THEN
IF length(refundNumber) > 1 THEN
concat(refundNumber, ', 88' )
ELSE
'88'
END IF
ELSE IF invNo='1' And itemNo='7095' THEN
IF length(refundNumber) > 1 THEN
concat(refundNumber, ', 88' )
ELSE
'88'
END IF
Else
refundNumber '- leave the field value as is because it does not comply with any of the above conditions
END IF

如何将其转换为 SQL CASE 字符串?

最佳答案

如果您不想更新 InvNo 不为“1”且 itemNo 不为“250”或“7095”的记录,为什么不使用 where 子句将集合限制为此条件?然后您需要使用 case 表达式连接退款号码和 88,但您甚至不需要这个,您可以使用:

UPDATE yourtable
SET refundNumber = ISNULL(CONCAT(NULLIF(refundNumber, ''), ', 88'), '88')
WHERE InvNo = '1'
AND itemNo in ('250', '7095')

或者使用嵌套的 case 表达式?

关于mysql - SQL更新案例中需要if/else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164412/

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