sql >> データベース >  >> RDS >> PostgreSQL

DELETEステートメントで行の物理的な場所(ROWID)を使用する方法

    PostgreSQLでは、行の物理的な場所はCTIDと呼ばれます。

    したがって、表示する場合は、次のようなクエリを使用してください:

    SELECT CTID FROM table_name
    

    DELETEステートメントで使用して重複レコードを削除するには、次のように使用します。

    DELETE FROM table_name WHERE CTID NOT IN (
      SELECT RECID FROM 
        (SELECT MIN(CTID) AS RECID, other_columns 
          FROM table_name GROUP BY other_columns) 
      a);
    

    table_nameが目的のテーブルであり、other_columnsがそれをフィルタリングするために使用する列であることを忘れないでください。

    つまり:

    DELETE FROM user_department WHERE CTID NOT IN (
      SELECT RECID FROM 
        (SELECT MIN(CTID) AS RECID, ud.user_id, ud.department_id
          FROM user_department ud GROUP BY ud.user_id, ud.department_id) 
      a);
    


    1. SQL状態:11またはその近くで42601構文エラー

    2. 複数の行を1つの行に集約するOracleSQLクエリはありますか?

    3. かなりのパーマリンクと投稿タイトルのリストをエクスポートする

    4. imdbpy2sql.pyはサウンドトラックをmysqlにエクスポートしますか?