我正在尝试通过删除出现在其他较大值内的值来缩小表的大小。例如
Column
Row1 potato234
Row2 to2
Row3 ot
Row4 potatos
我想要的结果是将第2行和第3行从表中删除,因为它们都出现在比它们大的另一行中。
我已经尝试为其编写代码,但是无法在DELETE语句中使用内部联接,我不知道如何在没有子查询返回多个元素的情况下进行操作。
DELETE FROM dbo.ENTRY_VALUES
WHERE LENGTH(ENTRIES) < (SELECT LENGTH(ENTRIES) FROM dbo.ENTRY_VALUES)
AND ENTRIES LIKE ('%' || (SELECT ENTRIES FROM dbo.ENTRY_VALUES) || '%')
您应该可以使用:
delete from entry_values
where exists (select 1
from entry_values ev2
where ev2.entry like '%' || entry_values.entry || '%' and
ev2.entry <> entry_values.entry
);