Autor Zpráva
para
Profil
Ahoj nemáte někdo po ruce metodu jak najít duplicitní záznamy v MySql. Podle různých sloupců. DB má cca. 3000 táznamů, ale na tom vlastně moc nesejde.
Díky
Honza Hučín
Profil
Jedna možnost je spočítat u každé hodnoty, kolikrát se v poli vyskystuje:

select pole, count(*) as pocet from tabulka group by pole

To vrátí jednotlivé hodnoty pole a počty výskytů. Pokud bys chtěl mít vypsané jen ty hodnoty, které se vyskytují víc než jednou, přidá se na konec "having pocet>1" nebo "having count(*)>1".

Kdybys chtěl vypsat záznamy s duplicitními hodnotami z původní tabulky, chce to poddotaz, což umějí jen některé verze MySQL.

SELECT id,pole
FROM tabulka
WHERE pole = (SELECT pole FROM tabulka GROUP BY pole HAVING Count(*)>1 );
Webspy
Profil
Honzo, můžeš to napsat jako skript ??? Snažím se naučit MySQL... :-) Dík
para
Profil
Aha, bezvadný něco takového jsem hledal.
Díky moc
Yuhů
Profil
Webspy, jako skript bys to měl zvládnout taky. Najdi si libovolný příklad v s MySQL a výše uvedený dotaz do něj vlož na jeden řádek.
Webspy
Profil
To Yuhů: OK, já to zvládnu, ale nechce se mi číst nějaké příručky. Raději rozebírám celé skripty :-)
SuE
Profil
trošku off topic a jen ze zvědavosti. K poddotazům - asi na Honzu Hučína :-)
Občas vidívám takové docela složité konstrukce select from select , teď bylo neco i na intervalu s tím select from (select union....
Proč se nepoužívají temp tabulky? Tohle třeba bylo jednoduché ale říkáš, že to zvládnou jen některé verze Mysql. Já jsem dneska přemohla svou nekonečnou lenost a podívala jsem se do specifikace mysql, jestli to jde - a jde. Bud insert into table nebo ručně create table heap ...
Totiž mohlo by to být rychlejší, než tlupy vnořených poddotazů - ačkoliv to se asi nejlíp pozná na velké databázi a pomalém serveru :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.