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

标签 mysql sql

我有两个表,一个用于 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/

相关文章:

sql - SSIS 中是否有用于平面文件源的 WHERE 子句功能?

php - PDO 无法访问数据库连接实例

IS NOT NULL MySQL 查询上的 PHP 白屏

mysql - 使用 parent_id 求和并分组

sql - 在 Google Dataflow 上使用 JdbcIO 的吞吐量非常低

mysql - 如何将表的某些列移动到新表并将 ids 保存回原始表

MySQL, MariaDB : Cannot create a table - ERROR 1005 (HY000). 外键有问题

php - 从 youtube 上传视频

php - 获取按模糊范围排序的每日数值统计数据

mysql - 选择带逗号的查询并加入