【问题标题】:Mysql:Complex Update QueryMysql:复杂的更新查询
【发布时间】:2014-05-15 11:50:05
【问题描述】:

我在用户表状态列中有状态。现在使用查询我想更新用户城市字段中的城市名称。我写了这个查询但没有工作。

1. USER TABLE

state      city     user_id

AF                     1
BF                     2 
CF                     3

2. STATE TABLE

UF      Name     

AF      AAA      
BF      BBB      
CF      CCC      

2. CITIES TABLE

UF_STATES      Name     

AF             XXX      
BF             YYY      
BF             XZZ      

查询:

UPDATE `user` SET `city` = 
(
    select name from cities WHERE uf = (select state from user)
)

【问题讨论】:

  • 用户 2 会得到哪个城市? cities 表中有两个。
  • 该查询的意思是,返回所有州名并尝试将其放入每个用户的城市字段。
  • 你的尝试注定要失败,因为一个州可以拥有多个城市。考虑将 cityID 放入您的用户表中,并将 stateID 放入您的城市表中。
  • statecities table 之间应该有关系。

标签: php jquery mysql sql


【解决方案1】:

我假设 STATE 是 CITY 的结果,因此您可能想要规范化您的表。至于您的问题,您需要确定对于给定的州应该使用哪个城市。一个例子是:

UPDATE user SET city = ( select MIN(name) from cities WHERE uf = (select state from user) )

【讨论】:

  • #1093 - 您不能在 FROM 子句中指定目标表“用户”进行更新
  • 马克,你是对的。我一直忘记mysql中的这个限制。由于操作没有将示例数据作为插入语句发布,所以我没有尝试。
猜你喜欢
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多