SQL - 删除字段中的重复项
SQL - Remove duplicate in a field
我更新了学校数据库中一些课程的名称,前缀为“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”。知道我如何最好地删除重复项吗?
您可以再次使用update
:
update course
set course_title = substr(course_title, 12)
where course_title like '2015/2016 - 2015/2016 - %';
注意:最好只有标志或状态列,而不是更改名称。您将来可能会遇到跨多年识别同一课程的问题。
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';
我会在所有 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"。
我更新了学校数据库中一些课程的名称,前缀为“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”。知道我如何最好地删除重复项吗?
您可以再次使用update
:
update course
set course_title = substr(course_title, 12)
where course_title like '2015/2016 - 2015/2016 - %';
注意:最好只有标志或状态列,而不是更改名称。您将来可能会遇到跨多年识别同一课程的问题。
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';
我会在所有 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"。