gpt4 book ai didi

mysql - SQL代码根据不同表中不同字段的值更改一个表中字段的值

转载 作者:可可西里 更新时间:2023-11-01 08:34:59 26 4
gpt4 key购买 nike

我是 SQL 的新手,所以请保持温柔...

我有一个产品数据库。我想使用 SQL 将一批产品移动到不同的类别,基于产品标题中是否存在特定单词,并且仅当产品数量为零时。

数据库包括2个相关表:

  • 第一个表是 products,它具有以下 2 个相关列:products_quantitymaster_categories_id

  • 第二个表是products_description,它有相关的列products_name(标题)

例如,具有以下标题的产品(存储在 products name 列中):

Archimede Seguso Murano Incalmo Millefiori Glass Bowl

我希望 SQL 代码找到该产品(任何其他在标题中包含单词 Archimede 的产品),检查库存数量是否为 0,并且如果是这样,请将这些产品的 master_categories_id 列的值更改为 277

到目前为止我想出的代码是:

UPDATE products
SET master_categories_id = '277'
WHERE products_quantity = '0' and products_name = 'Archimede';

但是,这不起作用,因为 products_name 列不在 products 表中。我花了很多时间寻找执行此操作的正确方法,但没有成功,如果有任何帮助,我将永远感激不已!

我的网站是使用 zencart 构建的,上面的 SQL 是使用 Zen Carts Admin“SQL 查询执行器”运行的,但如果有帮助,我也可以使用 phpMyAdmin 运行 SQL。我正在使用 MySQL 版本 5。

很抱歉,如果我遗漏了您需要知道的任何明显内容,就像我说我是一个完全的新手一样,但我会尽力提供您需要的任何其他信息。提前致谢!

最佳答案

假设您在两个表中都有一个可用于 JOIN 的产品 ID 列,您将需要 JOIN 表以执行 UPDATE:

UPDATE products p
INNER JOIN products_description pd
on p.product_id = pd.product_id
SET p.master_categories_id = '277'
WHERE p.products_quantity = '0'
and pd.products_name = 'Archimede';

如果您想更新任何包含 Archimede 的行,那么您必须在 SQL 中使用 LIKE 运算符:

UPDATE products p
INNER JOIN products_description pd
on p.product_id = pd.product_id
SET p.master_categories_id = '277'
WHERE p.products_quantity = '0'
and pd.products_name LIKE '%Archimede%';

LIKE 运算符将查找标题中包含 Archimede 的任何行。

关于mysql - SQL代码根据不同表中不同字段的值更改一个表中字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809642/

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