2013-06-19 95 views
0

我在数据库中有两个表称为categories和categories_description。在categories_description表中,我需要选择所有categories_name等于'Bearings'的categories_name。然后用这些选定的categories_id数字,使用'bearings.jpg'更新categories表中的categories_image。SQL从表1中选择ID并将相同的ID更新到表2

我明白如何编写代码来选择categories_id,但我不确定如何使用该选择来更新另一个表中的那些相同的categories_id。

SELECT categories_id FROM categories_description WHERE categories_name = 'Bearings'; 

现在我需要在上面选择的每个id的categories_image上更新categories表。

它应该是这样的,但我不确定如何将它们绑在一起。

UPDATE categories SET categories_image = 'bearings.jpg' WHERE categories_id = above statement 

回答

2

使用IN

UPDATE categories 
SET categories_image = 'bearings.jpg' 
WHERE categories_id IN (
    SELECT categories_id 
    FROM categories_description 
    WHERE categories_name = 'Bearings' 
) 
+0

谢谢,这个作品很棒! – Kyle

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有时在执行insubquery方面做得不好。

尽管如此,join语法是表达许多更新的强大方式,所以值得借鉴。

+0

谢谢你将参加联合行动 – Kyle

相关问题