我已经更新了学校数据库中许多课程的名称,前缀为“2015/2016 - ”,以便将它们标记为属于刚完成的学年。
update course
left join courseterm on course.courseID = CourseTerm.courseID
set course.title = CONCAT('2015/2016 - ',`Title`)
where courseterm.termID = 1 or courseterm.termID=2
and course.expires not like '0000-00-00 00:00:00';
由于处理错误,数万人中的约700人被运行两次。因此,有些课程现在有“2015/2016 - 2015/2016 - English 101”这样的名字。知道如何最好地删除重复项吗?
答案 0 :(得分:1)
您可以再次使用update
:
update course
set course_title = substr(course_title, 12)
where course_title like '2015/2016 - 2015/2016 - %';
作为一个注释:最好只有一个标志或状态列,而不是更改名称。您将来可能会遇到多年来确定相同课程的问题。
答案 1 :(得分:1)
我会在所有course.title字段中查找字符串“2015/2016 - 2015/2016”。 并用“2015/2016”替换该字符串。
UPDATE course SET title = REPLACE(title, '2015/2016 - 2015/2016', '2015/2016');
我同意@Gordon Linoff。添加标记为状态的字段。
如果记录重复 - 那么可以使用简单的“DELETE FROM WHERE”。
答案 2 :(得分:0)
REPLACE非常适合完成此任务。
https://msdn.microsoft.com/en-gb/library/ms186862.aspx
UPDATE course
SET course_title =
REPLACE(course_title
,'2015/2016 - 2015/2016'
,'2015/2016 ')
WHERE courseterm.termID = 1
OR courseterm.termID=2
AND course.expires NOT LIKE '0000-00-00 00:00:00';