1 つは regcourses 用で、もう 1 つは coursegroups という名前の 2 つのテーブルを取得しました。
コースグループ テーブル
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;
規則表:
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');
coursegroup テーブルの csgrec 列の特定の値に対して、regcourses テーブルの regstatus フィールドを「2」に更新したいと考えています。したがって、私の更新コードは次のとおりです。
UPDATE regcourses JOIN coursesgroup ON regcourses.regcourseID = coursesgroup.courseID
Set regcourses.regstatus =2
WHERE coursesgroup.csgrec=3
しかし、私のクエリは1行ではなく非常に多くの行に影響を与えています。csgrec=3 のみを変更したいので、私のクエリは と一致するすべての行に影響しますregcourses.regcourseID = coursesgroup.courseID condition
。これについて私を助けてください。