SQL从table1中选择ID并将相同的ID更新为table2

时间:2013-06-19 18:27:02

标签: mysql sql database

我在一个名为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

2 个答案:

答案 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语法是表达许多更新的有效方式,因此值得学习。