sql >> Database >  >> RDS >> PostgreSQL

De fysieke locatie van rijen (ROWID) gebruiken in een DELETE-instructie

Op PostgreSQL wordt de fysieke locatie van de rij CTID genoemd.

Dus als je het wilt bekijken, gebruik dan een QUERY zoals deze:

SELECT CTID FROM table_name

Om het te gebruiken op een DELETE-instructie om de dubbele records te verwijderen, gebruikt u het als volgt:

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

Onthoud dat table_name de gewenste tabel is en other_columns zijn de kolommen die u wilt gebruiken om die te filteren.

Dwz:

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. Het bereiken van MySQL-failover en failback op Google Cloud Platform (GCP)

  2. Sql Server werkt records niet bij

  3. Gebruik pg_dump resultaat als invoer voor pg_restore

  4. Wat is het equivalent voor LISTAGG (Oracle-database) in PostgreSQL?