gpt4 book ai didi

mysql - 使用 MySQL 根据条件和 ID 从另一个表更新表

转载 作者:行者123 更新时间:2023-11-29 10:20:12 25 4
gpt4 key购买 nike

我有 005_my_sc 表,其中包含列

pdb_id  listing_type
1 new
2 sale
3 rent

我还有带有列的 005_my_cl 表

pdb_id  listing_type
1 0
2 0
3 0

我想用以下条件更新 005_my_cl 表

  • 005_my_sc ID 与 005_my_cl ID 匹配
  • 如果 005_my_sc 中的listing_type = 'new' => 005_my_cl 中的listing_type = 2
  • 如果 005_my_sc 中的listing_type = 'rent' => 005_my_cl 中的listing_type = 1
  • 如果 005_my_sc 中的listing_type = 'sale' => 005_my_cl 中的listing_type = 2

这是我正在尝试的:

update 005_my_sc old, 005_my_cl new1 
set new1.listing_type = 2
where old.pdb_id = new1.pdb_id and old.listing_type = 'new'

代码没有语法错误,但没有任何变化,我错过了什么???

最佳答案

你可以试试这个,伙计:

UPDATE 005_my_sc t1
INNER JOIN 005_my_cl t2 ON t2.pdb_id = t1.pdb_id
SET t2.listing_type = (
CASE t1.listing_type
WHEN 'new' THEN 2
WHEN 'rent' THEN 1
WHEN 'sale' THEN 2
END
)
WHERE t1.listing_type IN ('new', 'rent', 'sale');

也许您错过了这些项目

  • 更新时您可以使用任何类型的JOIN
  • 列表类型的默认值不是 ('new', 'rent', 'sale'),因此您不再需要此行 WHERE t1.listing_type IN ('new', 'rent') ', '销售')

考虑到您有默认值,您可以使用它:

UPDATE 005_my_sc t1
INNER JOIN 005_my_cl t2 ON t2.pdb_id = t1.pdb_id
SET t2.listing_type = (
CASE t1.listing_type
WHEN 'new' THEN 2
WHEN 'rent' THEN 1
WHEN 'sale' THEN 2
ELSE 2
END
);

关于mysql - 使用 MySQL 根据条件和 ID 从另一个表更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420311/

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