0

我的数据库中有一种元数据表,我想剔除旧记录。我创建了一个“选择”语句来选择我要删除的行:

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 行。有两个问题:

  1. 我需要比较表名和所有者名。通过仅比较表名,我将删除两个不应删除的表。
  2. 该表没有唯一键,我无法创建它们。

鉴于上述情况,我应该如何执行此删除?

4

1 回答 1

1

你可以这样做:

delete from MAPINFO.MAPINFO_MAPCATALOG where (tablename, ownername) in (...)
于 2012-06-15T15:52:04.867 回答