Sto usando PostgreSQL 9.1 e voglio eliminare i duplicati dal mio tavolo con questo suggerimento: https://stackoverflow.com/a/3822833/2239537PostgreSQL con-delete "relazione non esiste"
Quindi, la mia domanda si presenta così:
WITH cte
AS (SELECT ROW_NUMBER()
OVER (PARTITION BY code, card_id, parent_id
ORDER BY id DESC) RN
FROM card)
DELETE FROM cte
WHERE RN > 1
Ma mi
ERROR: relation "cte" does not exist
SQL state: 42P01
Character: 157
mostra Tuttavia questa dichiarazione funziona bene:
WITH cte
AS (SELECT ROW_NUMBER()
OVER (PARTITION BY code, card_id, parent_id
ORDER BY id DESC) RN
FROM merchantcard)
SELECT * FROM cte
WHERE RN > 1
Qualche idea su come farlo funzionare? Grazie!
Wow, grazie per la risposta rapida e risposta utile! Ha funzionato per me, ha solo dovuto aggiungere "delete FROM card", ma questo è solo un errore di battitura, ovviamente. –
@AlexKartishev si, grazie, aggiornato –
La prima soluzione sembra cancellare tutte le righe nella tabella per me. Non capisco il comportamento di cte: se seleziono 'select count (1) da cte dove rn> 1' ottengo il numero corretto, ma' select count (1) dalla scheda dove id in (selezionare id da cte dove rn> 1) 'restituisce tutte le righe –