我需要消除类似的重复。我有一个包含以下值的列:
old1950
old1933
old1985
new_1950
new_1985
new_2008
运行删除命令后应该留下:
old1950
old1933
old1985
new_2008
正如您所见,delete命令应该保留旧命令。
所有数字前面都有一个标题'old'或'new'字面意思。
我如何实现这一目标?
现在我正在运行以下代码并且它正常工作,感谢fthiella
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)
答案 0 :(得分:1)
您可以使用此查询:
DELETE y1
FROM
yourtable y1 INNER JOIN yourtable y2
ON y1.col LIKE 'new%' AND y2.col LIKE 'old%'
AND SUBSTR(y1.col, 4)=SUBSTR(y2.col, 4)
请参阅小提琴here。