gpt4 book ai didi

mysql - 当 select 返回匹配行时,更新语句不起作用

转载 作者:行者123 更新时间:2023-11-29 20:12:08 25 4
gpt4 key购买 nike

我有一个 users 表映射到 schools 表。但是,最近我引入了一个 courses 表,它现在映射到 schools 表。我试图打破用户和学校之间的关系,而是通过类(class)将它们联系起来。

我尝试使用联接更新 users 表中受影响的行,但是没有更新任何行。我也没有看到任何错误消息。

当我使用相同的查询来选择匹配的行时,它会获取 20 行。

更新查询失败的可能原因有哪些?我检查并确认有一些行需要更新。

更新查询:

更新用户 INNER JOIN 类(class) ON users.course_id = course.school_id SET users.course_id = course.id

选择查询:

SELECT * FROM users INNER JOIN 类(class) users.course_id = course.school_id

可能是因为我正在尝试更新 JOIN 子句中使用的相同字段吗?

编辑

表结构:

学校:

id | name
--------------
1 | St. Joseph\'s
2 | St. Mary\'s

类(class):

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

最佳答案

嗯..更新语句“有效”,但你的逻辑不行。

drop table if exists courses;
create table courses (id int, school_id int);
insert into courses values
(10 , 1),
(2 , 1),
(3 , 2);
drop table if exists Users;
create table users (id int, name varchar(4), course_id int);
insert into users values
(1 ,'Ray' , 1),
(2 ,'Jake', 1),
(3 ,'Sam' , 1);

UPDATE users INNER JOIN courses ON users.course_id = courses.school_id SET users.course_id = courses.id ;

select * from users;

结果

+------+------+-----------+
| id | name | course_id |
+------+------+-----------+
| 1 | Ray | 10 |
| 2 | Jake | 10 |
| 3 | Sam | 10 |
+------+------+-----------+
3 rows in set (0.00 sec)

这符合预期。

关于mysql - 当 select 返回匹配行时,更新语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com