我在一个名为categories和categories_description的数据库中有两个表。在categories_description表中,我需要选择categories_name等于'Bearings'的所有categories_id。然后使用那些选定的categories_id数字,使用'bearings.jpg'更新categories表中的categories_image。
我理解如何编写代码来选择categories_id,但我不确定如何使用该选择来更新另一个表中的相同categories_id。
SELECT categories_id FROM categories_description WHERE categories_name = 'Bearings';
现在我需要在categories_image中更新从上面选择的每个id的类别表。
它应该是这样的,但我不确定如何将它们联系在一起。
UPDATE categories SET categories_image = 'bearings.jpg' WHERE categories_id = above statement
答案 0 :(得分:2)
使用IN
:
UPDATE categories
SET categories_image = 'bearings.jpg'
WHERE categories_id IN (
SELECT categories_id
FROM categories_description
WHERE categories_name = 'Bearings'
)
答案 1 :(得分:1)
您可以使用update
/ join
组合执行此类查询:
UPDATE categories c join
categories_description cd
on c.category_id = cd.category_id and
cd.categories_name = 'Bearings'
SET c.categories_image = 'bearings.jpg'
在您的情况下,主要区别在于表现。较旧版本的MySQL有时在使用in
实现subquery
时做得不好。
一般而言,join
语法是表达许多更新的有效方式,因此值得学习。