【发布时间】:2017-02-22 09:56:31
【问题描述】:
我有一个 users 表映射到一个 schools 表。
然而,最近我引入了一个courses 表,它现在映射到schools 表。
我试图打破用户和学校之间的关系,而是通过课程将他们联系起来。
我正在尝试使用连接更新users 表中受影响的行,但是没有更新任何行。我也没有看到任何错误消息。
当我使用相同的查询来选择匹配的行时,它会获取 20 行。
更新查询失败的可能原因是什么?我检查并确认有需要更新的行。
更新查询:
UPDATE users INNER JOIN courses ON users.course_id = courses.school_id SET users.course_id = courses.id
选择查询:
SELECT * FROM users INNER JOIN courses on users.course_id = courses.school_id
可能是因为我正在尝试更新 JOIN 子句中使用的相同字段吗?
编辑
表结构:
学校:
id | name
--------------
1 | St. Joseph\'s
2 | St. Mary\'s
课程:
id | school_id
--------------
1 | 1
2 | 1
3 | 2
用户:
id | name | course_id
---------------------
1 | Ray | 1
2 | Jake | 1
3 | Sam | 1
注意:
users.course_id 现在实际上已映射到 schools.id。
需要将其映射到 courses.id。
【问题讨论】:
-
1) 运行更新查询时是否收到任何错误消息? 2) 您是否在 users.course_id 字段上定义了 FK 关系?
-
1) 没有错误消息。 2) 没有 FK 关系。
-
更好地与样本数据共享表结构。
-
我对 users.course_id = courses.school_id 持怀疑态度,如果我们能看到示例数据,也许这应该是 users.course_id = courses.course_id 更好
-
共享示例数据。
标签: mysql