如何使用join根据另一个表更新mysql中的多个值

库纳尔

我有两个表产品和过滤器。我的产品表如下:-

id    name    color_id    size_id    composition_id
 1    Test      Black     60x60 CM       Cotton
 2    Test2     Red       60X90 CM      Acryllic

我的过滤器表如下:-

id    filter_name
 1      Black
 2      Red
 22     60x60 CM 
 23     60X90 CM
 61     Cotton
 62     Acryllic

我的预期输出如下:-

id    name    color_id    size_id    composition_id
 1    Test       1            22           61
 2    Test2      2            23           62

我尝试了以下仅适用于 color_id 的查询。查询如下:-

UPDATE products
INNER JOIN filters ON products.color_id = filters.filter_name
SET products.color_id = filters.id

我想在一个更新语句中更新所有“color_id,size_id,composition_id”。可能我们需要使用Case Statements。任何人都可以帮忙吗?

缺口

您可以这样做的一种方法是使用一组相关的子查询,一个用于您需要查找的每一列。我们使用 aCOALESCE以便如果找不到该值,我们保留以前的值:

UPDATE products p
  SET color_id = COALESCE((SELECT id FROM filters WHERE filter_name = p.color_id), color_id),
      size_id = COALESCE((SELECT id FROM filters WHERE filter_name = p.size_id), size_id),
      composition_id = COALESCE((SELECT id FROM filters WHERE filter_name = p.composition_id), composition_id)

然后你可以SELECT * FROM products

id  name    color_id    size_id composition_id
1   Test    1           22      61
2   Test2   2           23      62

dbfiddle 上的演示

您还可以通过UPDATE ... JOIN查询获得相同的结果,这可能更有效:

UPDATE products p
LEFT JOIN filters f1 ON f1.filter_name = p.color_id
LEFT JOIN filters f2 ON f2.filter_name = p.size_id
LEFT JOIN filters f3 ON f3.filter_name = p.composition_id
SET color_id = COALESCE(f1.id, color_id),
    size_id = COALESCE(f2.id, size_id),
    composition_id = COALESCE(f3.id, composition_id)

dbfiddle 上的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用MySQL根据另一个表中的列数更新列中的值

来自分类Dev

根据两个表中设置的值,使用另一个表中的索引更新 MySQL 表

来自分类Dev

如何使用 MySql 使用另一个表中的值更新两个表上的值

来自分类Dev

MySQL如何根据另一个表中的值更新一个表中的字段

来自分类Dev

如何获取更新语句以根据另一个表中的条目更改值

来自分类Dev

如何根据不同的条件使用另一个表中的值更新表

来自分类Dev

使用case语句(MYSQL)根据另一个表中的值更新一个表

来自分类Dev

如何从php / mysql中的另一个表的值分配多个值

来自分类Dev

如何使用lodash根据对象文字中的另一个值更新对象的值

来自分类Dev

如何根据另一个表的值删除一个表中的行

来自分类Dev

如何使用一个按钮将值插入表并在另一个表中更新值?

来自分类Dev

如何根据另一个参考列中的数据值填充或更新Excel工作表中的列值

来自分类Dev

在 MySQL 中如何使用基于另一个表的列值的名称连接表?

来自分类Dev

根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

来自分类Dev

如何根据另一个表中的最后一个值自动递增?

来自分类Dev

如何根据另一个表中的值在表中插入值

来自分类Dev

如何根据另一个表中的值访问表中的一行?

来自分类Dev

如何使用JOIN从另一个表中选择一个值

来自分类Dev

MySQL:根据另一个表中的第一个值选择表中的值

来自分类Dev

根据mysql中另一个表中的值更新一个表中的列

来自分类Dev

根据mysql中另一个表中的值更新一个表中的列

来自分类Dev

如何使用另一个表中的 select count(id) 设置 LIMIT 的值 |MySQL

来自分类Dev

根据另一个表中的行数将特定行更新为值

来自分类Dev

根据另一个表的值更新 Oracle 中表中的值

来自分类Dev

如何在更新 MySQL 中的第三个表时将多个记录从一个表插入另一个表

来自分类Dev

mysql从另一个表更新列值

来自分类Dev

使用 MySQL AFTER UPDATE 触发器根据 INT 值更改更新另一个表中的列

来自分类Dev

mysql将2个表插入另一个表中,使用JOIN

来自分类Dev

MySql根据另一个表中的MAX值选择一个表中的所有行

Related 相关文章

  1. 1

    使用MySQL根据另一个表中的列数更新列中的值

  2. 2

    根据两个表中设置的值,使用另一个表中的索引更新 MySQL 表

  3. 3

    如何使用 MySql 使用另一个表中的值更新两个表上的值

  4. 4

    MySQL如何根据另一个表中的值更新一个表中的字段

  5. 5

    如何获取更新语句以根据另一个表中的条目更改值

  6. 6

    如何根据不同的条件使用另一个表中的值更新表

  7. 7

    使用case语句(MYSQL)根据另一个表中的值更新一个表

  8. 8

    如何从php / mysql中的另一个表的值分配多个值

  9. 9

    如何使用lodash根据对象文字中的另一个值更新对象的值

  10. 10

    如何根据另一个表的值删除一个表中的行

  11. 11

    如何使用一个按钮将值插入表并在另一个表中更新值?

  12. 12

    如何根据另一个参考列中的数据值填充或更新Excel工作表中的列值

  13. 13

    在 MySQL 中如何使用基于另一个表的列值的名称连接表?

  14. 14

    根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

  15. 15

    如何根据另一个表中的最后一个值自动递增?

  16. 16

    如何根据另一个表中的值在表中插入值

  17. 17

    如何根据另一个表中的值访问表中的一行?

  18. 18

    如何使用JOIN从另一个表中选择一个值

  19. 19

    MySQL:根据另一个表中的第一个值选择表中的值

  20. 20

    根据mysql中另一个表中的值更新一个表中的列

  21. 21

    根据mysql中另一个表中的值更新一个表中的列

  22. 22

    如何使用另一个表中的 select count(id) 设置 LIMIT 的值 |MySQL

  23. 23

    根据另一个表中的行数将特定行更新为值

  24. 24

    根据另一个表的值更新 Oracle 中表中的值

  25. 25

    如何在更新 MySQL 中的第三个表时将多个记录从一个表插入另一个表

  26. 26

    mysql从另一个表更新列值

  27. 27

    使用 MySQL AFTER UPDATE 触发器根据 INT 值更改更新另一个表中的列

  28. 28

    mysql将2个表插入另一个表中,使用JOIN

  29. 29

    MySql根据另一个表中的MAX值选择一个表中的所有行

热门标签

归档