비슷한 중복 물을 제거해야합니다.중복 된 항목을 삭제하고 헤더를 사용하여 중복 된 항목을 보존 하시겠습니까?
old1950
old1933
old1985
new_1950
new_1985
new_2008
삭제 명령을 실행 한 후 두어야 : 나는 다음과 같은 값으로 열이
old1950
old1933
old1985
new_2008
당신이 삭제 명령이 이전 내용을 보존해야 볼 수 있듯이.
모든 숫자 뒤에 문자 'old'또는 'new'가 있습니다.
어떻게이 목표를 달성 할 수 있습니까? 감사는
CREATE TABLE yourtable (
`accountID` varchar(32) NOT NULL,
`deviceID` varchar(32) NOT NULL,
col VARCHAR(20),
PRIMARY KEY (`accountID`,`deviceID`)
);
INSERT INTO yourtable VALUES
(1,1,'old1950'),
(1,2,'old1933'),
(1,3,'old1985'),
(1,4,'new_1950'),
(1,5,'new_1985'),
(1,6,'new_2008');
DELETE y1
FROM
yourtable y1 INNER JOIN yourtable y2
ON y1.col LIKE 'new_%' AND y2.col LIKE 'old%'
AND SUBSTR(y1.col, 5)=SUBSTR(y2.col, 4)
"* 테이블에 데이터를 추가하려고합니다."라고 말하지만 질문은 데이터 삭제에 대해서만 이야기합니다. 새로운 데이터를 삽입하려고하지만 중복을 무시하려면 UNIQUE 제약 조건을 만들고 INSERT IGNORE를 사용하십시오. 그렇지 않으면 이미 삽입 된 레코드를 삭제하려는 경우 "오래된 레코드"와 "새로운 레코드"를 어떻게 식별합니까? – eggyal
죄송합니다, 제 잘못, 당신 말이 맞아요. –
데이터가 데이터베이스에 있지만 삭제하고 다시 삽입 할 수 있습니다. 내가 말했듯이 오래된 레지스터는 말 그대로 'old'라는 헤더와 새로운 헤더 인 'new'를 가지고있다. 그래서 만약 내가 '새 %'LIKE를 사용하여 삭제할 수 있습니다 대답 –