首页 > 解决方案 > 复杂的更新查询

问题描述

表格1

|id|name|address|car_id  |
|1 |Alex|US     |NULL    |
|2 |Jaso|Canada |1       |

表 2

|car_id|color|
|1     |red  |
|2     |blue |

我正在尝试用第二张表中蓝色汽车的 car_id 更新 Alex 的 car_id。是否可以在一个查询中完成?

我尝试编写下面的查询,但无法使其工作。有任何想法吗?

UPDATE table1
   SET table1.car_id = table2.car_id
  FROM table1
  JOIN table2 
    ON table2.color = "blue"
 WHERE table1.name = "Alex"

期望的结果:

|id|name|address|car_id  |
|1 |Alex|US     |2       |
|2 |Jaso|Canada |1       |

标签: mysqlsql

解决方案


我怀疑它在一个查询中不起作用。[编辑:错误,请参阅其他答案]

对于没有公共列的 2 个不同的表,您有 2 个不同的要求。您需要独立于 Alexes 行找到蓝色的 car_id,因为它们现在没有以任何方式链接。

我会这样做:

更新
  表格1
放
  table.car_id = (
    选择
      car_id
    从
      表2
    在哪里
      颜色像“蓝色”
  )
在哪里
  像“亚历克斯”这样的名字


推荐阅读