0

我需要消除类似的重复。我有一列包含以下值:

old1950
old1933
old1985
new_1950
new_1985
new_2008

运行删除命令后应该留下:

old1950
old1933
old1985
new_2008

如您所见,删除命令应保留旧命令。

所有数字前面都有一个标题“旧”或“新”字面意思。

我怎样才能实现这个目标?


现在我正在运行以下代码,它工作正常,感谢 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)
4

1 回答 1

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)

在此处查看小提琴。

于 2013-04-29T19:18:11.467 回答