2013-03-15 123 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