gpt4 book ai didi

mysql - mysql中如何通过连接两个表来更新一个表?

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

我有两个表,一个用于 regcourses,另一个名为 coursegroups。

类(class)组表

CREATE TABLE coursesgroup (
csgrec int(11) unsigned NOT NULL auto_increment,
courseID int(11) default NULL,
classID int(11) default NULL,
studgroup varchar(20) default NULL,
studnum int(11) default NULL,
PRIMARY KEY (csgrec)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

regcourses 表:

CREATE TABLE regcourses (
regrec int(11) unsigned NOT NULL auto_increment,
regsemrec int(11) default NULL,
regstudID int(11) default NULL,
regcourseID int(11) default NULL,
regstatus int(11) default '0',
yearsem int(11) default '2012',
monthsem1 int(11) default '3',
classID int(11) default '1',
PRIMARY KEY (regrec)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入语句:

INSERT INTO coursesgroup VALUES ('2', '20', '1', 'BBA1009A1', '11');
INSERT INTO coursesgroup VALUES ('3', '20', '1', 'BBA1009B1', '4');

INSERT INTO regcourses VALUES ('2', '1', '98', '47', '0', '2012', '3', '1');
INSERT INTO regcourses VALUES ('4', '1', '98', '101', '0', '2012', '3', '1');

对于 coursesgroup 表中 csgrec 列的特定值,我想将 regcourses 表的 regstatus 字段更新为“2”。所以我的更新代码是:

UPDATE regcourses JOIN coursesgroup ON regcourses.regcourseID = coursesgroup.courseID 
Set regcourses.regstatus =2
WHERE coursesgroup.csgrec=3

但是我的查询影响了很多行而不是一行。因为我只想更改 csgrec=3,而我的查询会影响与 regcourses.regcourseID = coursesgroup.courseID 条件 匹配的所有行。请帮我解决这个问题。

最佳答案

首先,运行这个查询:

SELECT * FROM regcourses
JOIN coursesgroup ON regcourses.regcourseID = coursesgroup.courseID
WHERE coursesgroup.csgrec=3

(这与你的更新基本相同,没有做任何更新。)如果你的加入错误,那会告诉你;如果您匹配的行过多。

从您的insert 语句中,我看不出应该发生什么——从您显示的四行中,没有任何内容应该符合连接条件。尝试插入并查看先返回多少行。

关于mysql - mysql中如何通过连接两个表来更新一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12480413/

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