sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat fyzické umístění řádků (ROWID) v příkazu DELETE

V PostgreSQL se fyzické umístění řádku nazývá CTID.

Takže pokud to chcete zobrazit, použijte QUERY takto:

SELECT CTID FROM table_name

Chcete-li jej použít v příkazu DELETE k odstranění duplicitních záznamů, použijte jej takto:

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);

Pamatujte, že název_tabulky je požadovaná tabulka a další_sloupce jsou sloupce, které chcete použít k filtrování.

Tj.:

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. MySQL DISTINCT na GROUP_CONCAT()

  2. Jak získat šablonu django pro získávání informací ze dvou různých modelů?

  3. Převést WM_CONCAT na Listagg

  4. PERIOD_ADD() Příklady – MySQL