2016-04-08 4 views
-2

я, случается, есть некоторые «плохие» данные в моей БД, как это:Удаление дубликатов строки в том же поле

ID | name  | 
1 | Apple Apple | 
2 | Banana  | 
3 | Orange  | 

Я унаследовал некоторые имена, которые повторяются, как «Apple Apple».

Как удалить дубликат «Apple» непосредственно в MySQL, не используя PHP или другие серверные скрипты.

желаемый результат должен быть только "Яблоко"

+1

Вы можете иметь законные данные в поле Имя, которое содержит пространство? – Shadow

+0

Возможный дубликат [Удалить повторяющиеся слова из поля в mysql] (http://stackoverflow.com/questions/3996831/remove-duplicate-words-from-field-in-mysql) –

+2

Удалить что? Удалить строку? Удалить второе слово? Что, если есть несколько слов? Что, если есть два слова, которые отличаются? Может ли быть три повторных слова? 4? _Удавите свои требования. Затем покажите свои попытки удовлетворить их. –

ответ

0

UPDATE имя table_name SET = 'Apple' WHERE ID = 1;

+0

Я думал о том, чтобы добавить этот ответ сам :) – Shadow

0

Вы можете разделить строку и сравнить ее. Следующий сценарий написан на MSSQL, но вы можете понять эту идею.

declare @z varchar(100); 
set @z = 'Apple Apple' 
--First Part, Second part 
Select SUBSTRING(@z, 0, ((LEN(@z)+1)/2) + 1), SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) 

ваш запрос должен выглядеть

Update Table_Name set 
Column_Name = Case 
      When (firstPart = SecondPart) 
      Then FirstPart 
      Else Column_Name 
      End 

Update Table_Name 
set Column_Name = Case 
       when (SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) = SUBSTRING(@z, 0, ((LEN(@z)+1)/2) + 1)) 
       Then SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) 
       Else Column_Name 
       End 
Смежные вопросы