2013-03-15 106 views
0

我不能为我的生活找出这里发生了什么。我期望在以下查询中更新表entities中的记录5394560的rand_id以更新以匹配表unique_ids中相同记录的rand_id。相反,它会更新到9?!?!?奇怪的结果使用UPDATE查询

mysql> update entities, unique_ids SET entities.rand_id = unique_ids.rand_id where entities.id=5394560; 
Query OK, 1 rows affected (2.74 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

检查结果:

mysql> select * from entities where id=5394560; 
+---------+------------------+---------+---------------------+ 
| id  | name    | rand_id | created_at   | 
+---------+------------------+---------+---------------------+ 
| 5394560 | Andorra la Vella |  9 | 2013-03-15 13:58:38 | 
+---------+------------------+---------+---------------------+ 
1 row in set (0.00 sec) 

mysql> select * from unique_ids where id=5394560; 
+---------+----------+ 
| id  | rand_id | 
+---------+----------+ 
| 5394560 | 26543652 | 
+---------+----------+ 
1 row in set (0.00 sec) 

我失去的东西完全简单和愚蠢吗?!?!?两个表中的两列都使用了int(11),所以我不认为这是数据类型最大值的问题,但我可能是错的...

+0

我想这是在主键uniques_ids – rene 2013-03-15 12:25:05

回答

1

您错过了两个表之间的任何连接。 besically尝试ading 实体unique_ids之间的关系没有被定义

一些“WHERE entities.something = unique_ids.somethingelse”里的东西,somethingelse是从每个问题的表的列名。

我相信这是你的解决方案(注意最后的“AND ...”部分):

update entities, unique_ids 
SET entities.rand_id = unique_ids.rand_id 
where entities.id=5394560 
    AND unique_ids.id=entities.id; 
+0

“第一”的记录好了,废话对我来说!你找到了我失踪的蠢事! :-) 谢谢。 – robguinness 2013-03-15 12:33:53

+0

@robguinness :)也许你会发现更简单使用**更新x左JOIN y ON x.a = y.b SET .... WHERE .... **改为 – Martina 2013-03-15 12:37:11