首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中的Concat和Concat_ws

mysql中的Concat和Concat_ws
EN

Stack Overflow用户
提问于 2012-06-22 09:37:51
回答 1查看 382关注 0票数 0

我有以下的数据库结构。

代码语言:javascript
复制
ID | Name | Marks

我正在尝试在我的PHP脚本中插入记录。如果该记录不存在,我将创建一个新记录。如果它确实存在,我会将mark列与新的mark连接起来。

代码语言:javascript
复制
$strSQL = "Replace into student set ID = '".$id."', 
                 name = '".$name."', marks= CONCAT_WS(',',Marks,'".$marks."')";

查询运行正常,但连接不起作用。旧记录正在被新记录覆盖。我也试过CONCAT

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-22 09:44:36

处理这种情况的正确方法是使用一个单独的规范化表来保存学生ids和分数。使用INSERT IGNORE将学生信息插入到student表中,然后将标记插入到marks表中,每个学生插入多行。这还允许您将日期与添加到表中的每个分数一起存储,或存储其他信息(如它所属的课程)。请注意,我通常不建议使用INSERT IGNORE来创建行,而是首先在代码中检查该行是否存在,如果不存在,则只插入行。

代码语言:javascript
复制
CREATE TABLE marks (
   markID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   studentID INT NOT NULL,
   mark VARCHAR() NOT NULL,
   markdate DATETIME NOT NULL
);

/* First execute the insert, which will ignore errors if it already exists */
INSERT IGNORE INTO student (ID, name) VALUES ($id, '$name');

/* Then insert the new marks. Loop to add as many new marks as needed */
INSERT INTO marks (studentID, mark, markdate) VALUES ($id, '$marks', NOW());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11149189

复制
相关文章

相似问题

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