mysql - 使用 UPDATE 查询的奇怪结果

标签 mysql sql-update

我一生都无法弄清楚这里发生了什么。我希望在以下查询中,表 rand_id 中记录 5394560 的 entities 被更新以匹配表 rand_id 中同一记录的 unique_ids 。相反,它更新为 9?!?!?

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) ,所以我认为这不是数据类型最大值的问题,但我可能是错的......

最佳答案

您缺少两个表之间的任何连接。本质上,实体unique_ids之间的关系未定义

尝试添加一些“WHEREEntity.something=unique_ids.somethingelse”,其中something和somethingelse是相关表中每个表的列名。

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

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

关于mysql - 使用 UPDATE 查询的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15432323/

相关文章:

mysql - 无法从 mysql 查询得到不同的结果?

java - SQL更新查询-尝试更新sql记录

java - SQL(和 Javax.Persistence.Query.ExecuteQuery)如何将 UPDATE 与 WHERE-IN 和 AND 一起使用

php - 更新数据库重定向到其他页面

sql - 根据另一个表中的数据更新 SQLite 表

MySQL 根据另一个列限制获得最高列数?

mysql - 在实时服务器上更改 MYSQL 数据库表

mysql - 如何将 MySQL 转换为 SQL Azure? (Wordpress 数据库)

c# - 存储更新、插入或删除语句影响了意外数量的行

php - 如何检查 UPDATE mysqli 查询是否正确执行?