sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan bruger du den fysiske placering af rækker (ROWID) i en DELETE-sætning

På PostgreSQL kaldes den fysiske placering af rækken CTID.

Så hvis du vil se det, brug en QUERY som denne:

SELECT CTID FROM table_name

For at bruge det på en DELETE-sætning til at fjerne de duplikerede poster, brug det sådan her:

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

Husk, at tabelnavn er den ønskede tabel, og andre_kolonner er de kolonner, du vil bruge til at filtrere det.

Dvs:

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. Skift type af en kolonne med tal fra varchar til int

  2. Sådan rettes "MySQL ERROR 1819 (HY000):" i Linux

  3. Hvordan forbinder jeg to tabeller og sammenligner dem? (Jeg har spurgt flere gange, men jeg kunne ikke finde svaret.)

  4. Forespørgsel i en Oracle-database med dynamiske tabelnavne