gpt4 book ai didi

mysql - 一个查询中的多个 Where 更新 - 高效结构

转载 作者:行者123 更新时间:2023-11-29 02:25:06 26 4
gpt4 key购买 nike

我正在尝试使用典型的 update where 语法更新大量行。

为了保持统一,我将这个查询放在一起,但它不起作用(在第一个括号处失败)

UPDATE product_options 
SET
(object_id=14,option_key='size_small',option_name='Size Small',option_description='This is the small size...',option_price=2.50),
(object_id=14,option_key='size_medium',option_name='Size Medium',option_description='This is the medium size...',option_price=5.50),
(object_id=14,option_key='size_large',option_name='Size Large',option_description='This is the large size...',option_price=10.50),
(object_id=14,option_key='size_really_big',option_name='Size Really Big',option_description='This is the really big size...',option_price=20.50)

WHERE (option_id=1), (option_id=2), (option_id=3), (option_id=4)

每个SET 语句都有相应的WHERE 语句。那么这里出了什么问题?


编辑:

根据提供的答案,这是最终有效的完整查询:

UPDATE `product_options` SET

`object_id` = 14,

`option_key` = CASE
WHEN `option_id`='1' THEN 'size_small'
WHEN `option_id`='2' THEN 'size_medium'
WHEN `option_id`='3' THEN 'size_large'
ELSE `option_key` END,

`option_name` = CASE
WHEN `option_id`='1' THEN 'Small'
WHEN `option_id`='2' THEN 'Medium'
WHEN `option_id`='3' THEN 'Larger'
ELSE `option_name` END,

`option_price` = CASE
WHEN `option_id`='1' THEN 5.50
WHEN `option_id`='2' THEN 10.00
WHEN `option_id`='3' THEN 21
ELSE `option_price` END

WHERE `option_id`='1' OR `option_id`='2' OR `option_id`='3'

最佳答案

这不是它的工作原理。如果您愿意,可以使用 CASE 语句:

UPDATE product_options 
SET
object_id=14,
option_key=
case when option_id = 1
then 'size_small'
when option_id = 2
then 'size_medium'
when option_id = 3
then 'size_large'
when option_id = 4
then 'size_really_big'
end,
....
WHERE option_id IN (1,2,3,4)

您还可以使用连接,例如:

UPDATE product_options po
JOIN (
SELECT 1 option_id, 'size_small' option_key, 'Size Small' option_name
UNION ALL
SELECT 2 option_id, 'size_medium' option_key, 'Size Medium' option_name
...
) temp ON po.option_id = temp.option_id
SET po.object_id = 14,
po.option_key = temp.option_key,
po.option_name = temp.option_name

关于mysql - 一个查询中的多个 Where 更新 - 高效结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860829/

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