我的数据库中有一种元数据表,我想剔除旧记录。我创建了一个“选择”语句来选择我要删除的行:
select m.tablename, m.OWNERNAME
from MAPINFO.MAPINFO_MAPCATALOG m
left outer join sys.ALL_TABLES t
on TRIM(m.tablename) = t.TABLE_NAME and TRIM(m.OWNERNAME) = t.owner
where t.num_rows is null
这给了我 113 行。
但是,我不知道如何将其转换为“删除”。我打算只使用:
delete from MAPINFO.MAPINFO_MAPCATALOG where tablename in (...)
但这会删除 115 行。有两个问题:
- 我需要比较表名和所有者名。通过仅比较表名,我将删除两个不应删除的表。
- 该表没有唯一键,我无法创建它们。
鉴于上述情况,我应该如何执行此删除?