Autor | Zpráva | ||
---|---|---|---|
Pavel Straka Profil |
#1 · Zasláno: 20. 10. 2012, 23:04:19
Dobrý večer, rád bych požádal zkušenější o radu, jak postupovat, když chci elegantně odstranit duplicitní záznamy (na základě shody dat v jednom sloupci) v rámci 1 tabulky - chci zachovat jen 1 záznam/řádek.
Děkuji za ochotu pomoci. |
||
Tori Profil |
#2 · Zasláno: 20. 10. 2012, 23:41:06 · Upravil/a: Tori
Pavel Straka:
„chci zachovat jen 1 záznam“ Který - s nejvyšším ID, nebo podle čeho se pozná? Pokud byste chtěl zachovat záznamy s nejvyšším ID, tak to bude vypadat asi takhle: DELETE t1 FROM tabulka t1 INNER JOIN (SELECT MAX(id) id, dupl FROM tabulka GROUP BY dupl) ref ON t1.id != ref.id AND t1.dupl = ref.dupl - pro každou hodnotu ve sloupci duplicit najdete řádek, který se má zachovat a joinem (= ke smazání) vyberete ty ostatní |
||
Kajman Profil |
#3 · Zasláno: 21. 10. 2012, 00:12:01
Tori:
Možná by bylo o chlup rychlejší přidat do té závorky having. Pavel Straka: Případně se dají použít i obdoby z faq. |
||
Tori Profil |
#4 · Zasláno: 21. 10. 2012, 00:24:25
Kajman:
Tak tentokrát jsem zapomněla, že to máme ve FAQ, pardon, odkázala bych. |
||
Časová prodleva: 12 let
|
0