首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果重复插入,是否更新?W插入时自动递增主键?

如果重复插入,是否更新?W插入时自动递增主键?
EN

Stack Overflow用户
提问于 2012-02-28 03:35:10
回答 1查看 325关注 0票数 3

给定两个表:

代码语言:javascript
复制
`Students`
id         int, primary, auto-increment
sid        int
fname      varchar
lname      varchar


`Registration`
id          int, primary, auto-increment
student_sid int
coursenum   int

有没有一种方法可以用他们注册的每个类的课程号填充Students中的新列?因此,每次为给定的sid添加第二个coursenum时,students.id将自动递增,并保留主键,而包含sid、fname、lname和new coursenum的新行将被添加到表中。

这有点像INSERT...IF复制更新的倒退版本。我想要UPDATE...IF复制插入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 04:57:30

也许你可以这样做(参见下面的注释):

代码语言:javascript
复制
    $result = mysql_query("SELECT DISTINCT student_sid from Registration");
while (list($studentID) = mysql_fetch_row($result))
{
    $result2 = mysql_query("SELECT fname, lname FROM Students WHERE sid = '{$studentID}'");
    list($fname, $lname) = mysql_fetch_row($result2);

    mysql_query("DELETE FROM Students WHERE sid = '{$studentID}'");
    mysql_query("INSERT INTO Students (sid, fname, lname, coursenum) SELECT '{$studentID}', '{$fname}', '{$lname}', coursenum FROM Registration WHERE student_sid = '{$studentID}'");
}

这里有几点注意事项:

  1. 此代码未经过测试,但我认为它应该可以正常工作。
  2. 这不会保留Students表中的原始id列。它将获取名字和姓氏,然后删除学生,并为Registration表中的每个条目插入新行。它将保留sidfnamelname,并将填充一个新列还假设您已经更改了Students表,以包括关于您在此讨论的学生和课程数量的coursenum column.
  3. Depending,此代码可能不是世界上最快的,但我假设这不是一次性迁移所能完成的事情。

希望这能对你有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9471088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档