gpt4 book ai didi

mysql - 如果重复插入则更新? w 在 INSERT 上自动增加 P​​K?

转载 作者:可可西里 更新时间:2023-11-01 08:53:14 24 4
gpt4 key购买 nike

给定两个表:

`Students`
id int, primary, auto-increment
sid int
fname varchar
lname varchar


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

有没有办法用他们注册的每个类(class)的类(class)编号填充Students 中的新列?因此,每次为给定的 sid 添加第二个 coursenum 时,students.id 将自动递增,保留主键,同时将包含 sid、fname、lname 和新 coursenum 的新行添加到表中。

它有点像 INSERT...IF DUPLICATE UPDATE 的倒退版本。我想要更新...如果重复插入。

最佳答案

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

    $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,并将填充一个新列 coursenum
  3. 这还假设您已经更改了 Students 表以包含 coursenum 列。
  4. 根据您在这里谈论的学生和类(class)的数量,此代码可能不是世界上最快的,但我假设这不是定期完成的事情......更多的是一次性迁移之类的事情。

希望这对你有帮助。

关于mysql - 如果重复插入则更新? w 在 INSERT 上自动增加 P​​K?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471088/

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