Mysql 基于不同表中不同字段的值更改一个表中字段值的SQL代码
我是SQL的新手,所以请温柔一点 我有一个产品数据库。我想使用SQL将一批产品移动到不同的类别,这取决于产品标题中是否存在特定的单词,并且仅当产品数量为零时 该数据库包括2个相关表:Mysql 基于不同表中不同字段的值更改一个表中字段值的SQL代码,mysql,sql,Mysql,Sql,我是SQL的新手,所以请温柔一点 我有一个产品数据库。我想使用SQL将一批产品移动到不同的类别,这取决于产品标题中是否存在特定的单词,并且仅当产品数量为零时 该数据库包括2个相关表: 第一个表是products,它有两个相关列:products\u quantity和master\u categories\u id 第二个表是products\u description,它有相关列products\u name(标题) 例如,具有以下标题的产品(存储在products name列中): 我希
- 第一个表是
,它有两个相关列:products
和products\u quantity
master\u categories\u id
- 第二个表是
,它有相关列products\u description
(标题)products\u name
products name
列中):
我希望SQL代码能够找到此产品(标题中包含单词阿基米德
的任何其他产品),检查库存量是否为0
,如果是,请将这些产品的master\u categories\u id
列的值更改为277
到目前为止,我提出的代码是:
UPDATE products
SET master_categories_id = '277'
WHERE products_quantity = '0' and products_name = 'Archimede';
但是,这不起作用,因为products\u name
列不在products
表中。我花了很多时间寻找正确的方法来做这件事,没有运气,并将永远感谢任何帮助
我的网站是使用zencart构建的,上面的SQL是使用zencart管理员“SQL查询执行器”运行的,但是如果有帮助的话,我也可以使用phpMyAdmin运行SQL。我使用的是MySQL版本5
很抱歉,如果我遗漏了你需要知道的任何明显的信息,就像我说的,我是一个完全的新手,但是我会尝试提供你需要的任何其他信息。提前谢谢 假设两个表中都有一个products id列可用于联接,则需要联接这些表以执行
更新
:
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';
如果要更新包含阿基米德
的任何行,则必须在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
操作符将在标题中查找包含阿基米德的任何行 应该有一些将一个表中的产品与另一个表中的产品关联起来的公共字段。如果没有这一点,你就无法继续前进。这肯定是正确的(必须将“product\u id”更改为“products\u id”),但现在很明显,还有第三个表也需要更改:表名:“products\u to\u categories”。2个字段:“产品标识”和“类别标识”。该表中的“类别id”字段也需要更改为与“主类别id”相同的数字(如277)。很抱歉之前没有意识到这一点,非常感谢迄今为止的帮助@WayneStephens那么需要在另一个表中更改的类别id是吗?是的,第三个表名为“products\u to\u categories”。我不知道如何连接3个表(在您的帮助之前,我不知道如何连接2个表),但现在我已经在第一个脚本之后运行了以下脚本:updateproducts\u to\u categories pc internal join products p on pc.products\u id=p.products\u id SET pc.categories\u id='277',p.master\u categories\u id='277'代码>
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%';