0

データベースに、古いレコードを選別したい一種のメタデータ テーブルがあります。削除する行を選択する「select」ステートメントを作成しました。

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 行を削除します。2 つの問題があります。

  1. テーブル名と所有者名を比較する必要があります。tablename を比較するだけで、削除してはならない 2 つのテーブルを削除することになります。
  2. テーブルには一意のキーがなく、作成する立場にありません。

上記の場合、この削除を実行するにはどうすればよいですか?

4

1 に答える 1

1

あなたはこれを行うことができます:

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