2012-07-31 4 views
1

나는 지금 내가 좋아하는 단 하나의 동일한 문자열을 대체 할 문자열을찾아 데이터베이스에 반복되는 문자열을 대체

[data attr1='2300.48' attr1='1' attr1='1116.95' attr1='60.75' attr1='9.22' attr1='' attr1='0' attr1='3593.39' attr1='119.05' attr1='25.96' attr1='27.98' attr1='36.32'] 

[data attr1='2300.48' attr1='1' attr1='1116.95' attr1='60.75' attr1='9.22' attr1='' attr1='0' attr1='3593.39' attr1='119.05' attr1='25.96' attr1='27.98' attr1='36.32'] 

[data attr1='2300.48' attr1='1' attr1='1116.95' attr1='60.75' attr1='9.22' attr1='' attr1='0' attr1='3593.39' attr1='119.05' attr1='25.96' attr1='27.98' attr1='36.32'] 

[data attr1='2300.48' attr1='1' attr1='1116.95' attr1='60.75' attr1='9.22' attr1='' attr1='0' attr1='3593.39' attr1='119.05' attr1='25.96' attr1='27.98' attr1='36.32'] 

를 다음과 같이 내 그 커다란 일부 행에 문제가 데이터를했습니다 :

[data attr1='2300.48' attr1='1' attr1='1116.95' attr1='60.75' attr1='9.22' attr1='' attr1='0' attr1='3593.39' attr1='119.05' attr1='25.96' attr1='27.98' attr1='36.32'] 

attr의 값은 다양합니다.

- 갱신 -

방법의 열 이름이 content라고하며이 열의 값이

the text of the article 
[data.... ] 
[data.... ] 
[data.... ] 

content의 데이터 유형이 longtext

입니다 데이터베이스 에 저장 죄송합니다 나는 SQL 테이블의 적절한 구조를 만들 수 없습니다.

미리 도움을 주셔서 감사합니다.

+0

어떻게 데이터베이스에 저장 되나요? 그냥 텍스트 필드? –

+0

체크 아웃 : http://stackoverflow.com/questions/1651999/mysql-remove-duplicates-from-big-database-quick – mlishn

+0

plz 테이블 구조를 제공하십시오 –

답변

0

다음은 제 작품을 만든 스크립트입니다.

$link = mysqli_connect("SERVER", "root", "root"); 
    $db = mysqli_select_db($link, "test"); 
    $res = mysqli_query($link, "SELECT * FROM wp_posts WHERE post_content LIKE '%nutr-label servingsize%nutr-label servingsize%'"); 

    if($res){ 
     $i=1; 
     while($row = mysqli_fetch_array($res)){ 
      $str1 = strrpos($row['post_content'],"[nutr-label servingsize='"); 
      $sub1 = substr($row['post_content'],$str1); 
      $str2 = strrpos($row['post_content'],"']"); 

      $finalStr = substr($row['post_content'],$str1,$str2); 
      $newPostContent = substr($row['post_content'], 0, strpos($row['post_content'],"[nutr-label servingsize='")).$finalStr; 
      $up = mysqli_query($link,"UPDATE wp_posts SET post_content ='".addslashes($newPostContent)."' WHERE ID='".$row['ID']."'"); 
      $i++; 
     } 
    }else{ 
     echo mysqli_error(); 
    } 
2

다른 요구에 따라 DISTINCT 또는 GROUP BY을 사용하여 중복 값을 제거 할 수 있습니다.

select distinct mycolumn from mytable; 

또는 : 예를 들어 삭제/중복 행을 제거하려면

select mycolumn from mytable group by mycolumn; 
0

당신이 사용할 수있는

DELETE t 
FROM t 
LEFT JOIN t AS t2 ON (t.content = t2.content AND t.id > t2.id) 
WHERE t2.id; 

전 :

SELECT * FROM t; 
+----+---------+ 
| id | content | 
+----+---------+ 
| 1 | abc  | 
| 5 | abc123 | 
| 9 | abc123 | 
| 13 | abc  | 
| 17 | abc  | 
+----+---------+ 

후 :

SELECT * FROM t; 
+----+---------+ 
| id | content | 
+----+---------+ 
| 1 | abc  | 
| 5 | abc123 | 
+----+---------+ 
관련 문제