Autor | Zpráva | ||
---|---|---|---|
RomikTronik Profil * |
#1 · Zasláno: 28. 1. 2010, 11:54:00
Potřebuji vybrat řádky, které nemají unikátní mail. Zkusil jsem
SELECT * FROM `uzivatele` GROUP BY mail HAVING COUNT( mail ) >1 to funguje, ale já potřebuju aby mi to zobrazilo všechny řádky ve kterých není unikátní mail. Tohle mi ti řádky spojí do jednoho. tak jsem zkusil SELECT * FROM `uzivatele` GROUP BY id HAVING COUNT( mail ) >1 to mi vrátilo nulový výsledek. Můžete mi prosím někdo poradit jak vybrat všechny řádky na kterých není unikátní email, jednotlivě aniž by je spojoval dohromady? |
||
TomášK Profil |
#2 · Zasláno: 28. 1. 2010, 12:06:18 · Upravil/a: TomášK
GROUP BY id SELECT * FROM uzivatele WHERE mail IN ( SELECT mail FROM `uzivatele` GROUP BY mail HAVING COUNT(*) > 1 ); |
||
RomikTronik Profil * |
#3 · Zasláno: 28. 1. 2010, 13:58:10
děkuju, tohle funguje, ale pouze v případě že ktomu přidám LIMIT 0,5 jinak, pokud chci projit celou tabulku, tak to vyhodí "MySQL server has gone away". Jde to vyřešit nějak lépe? Nebo jak můžu zvýšit timeout?
Tabulka má 100 000 řádků a z toho je tam 10% duplicitních emailů. Takže dotaz vlastně porovnává každý řádek s 10 000 maily.... |
||
petr 6 Profil |
#4 · Zasláno: 28. 1. 2010, 14:05:31
select count(id), mail from uzivatele group by mail having count(id)>1 |
||
RomikTronik Profil * |
#5 · Zasláno: 28. 1. 2010, 14:12:21
petr 6:
to se u každého neunikátního mailu dovím kolikrát tam je, já ale potřebuju aby mi vypsal jednotlivé řádky, protože u dvou stejných emailů jsou jiné loginy a podobné informace |
||
Kajman_ Profil * |
#6 · Zasláno: 28. 1. 2010, 14:37:15
Mysql často k podmínkám v in na stejné tabulce nesmyslně přistupuje jako ke korelovaným poddotazům, co se vyhodnocují pro každý řádek. Mělo by stačit přespat to samé do spojení...
SELECT * FROM uzivatele JOIN (SELECT mail FROM uzivatele GROUP BY mail HAVING COUNT(mail) > 1) duplicitni ON uzivatele.mail = duplicitni.mail |
||
RomikTronik Profil * |
#7 · Zasláno: 28. 1. 2010, 14:50:37
Kajman:
Děkuji tobě i ostatním, toto už funguje a je to celkem pěkná finta... sem rád že jsem se zase něco naučil :-) |
||
Časová prodleva: 14 let
|
0