连接和子查询

axkjgtzd  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(182)

我有两个表addressactor。我必须更新参与者的地址(address表中的列),其act_id(在actor表中)为36。

下面的查询会有同样的效果吗?

使用JOIN:

  1. UPDATE `address`
  2. INNER JOIN actor ON actor.address_id=address.address_id
  3. SET `address`="677 Jazz Street"
  4. WHERE actor.actor_id=36

使用子查询:

  1. UPDATE address
  2. SET address = "677 Jazz Street"
  3. WHERE
  4. (SELECT address_id FROM actor
  5. WHERE actor_id = 36);

我为什么要问的是,当我执行子查询时,它显示620行受到影响,而AS Join查询只显示1匹配0受影响(这是可以理解的,因为我已经使用子查询进行了更新),但为什么显示620行?

w3nuxt5m

w3nuxt5m1#

No, because you're not correlating the subquery with the main table. You need a comparison in the WHERE condition.

  1. UPDATE address
  2. SET address = '677 Jazz Street'
  3. WHERE address_id = (
  4. SELECT address_id
  5. FROM actor
  6. WHERE actor_id = 36)

相关问题