PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да използвате физическото местоположение на редовете (ROWID) в оператор DELETE

В PostgreSQL физическото местоположение на реда се нарича CTID.

Така че, ако искате да го видите, използвайте QUERY като този:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Промяна/нулиране на потребителската парола на postgresql в Windows 7

  2. SQL заявка:Извличане на подредени редове от таблица

  3. Rails schema.rb не включва нова персонализирана функция на Postgres

  4. Postgresql GROUP_CONCAT еквивалент?

  5. Прехвърляне на данни между бази данни с PostgreSQL