Re: mssql - mazani duplicit
Pisu z hlavy, ale neco takoveho?
Kód:
delete from tab
where col in
(select col, count(*)
from tab
group by col
having count(*) > 1)
Kde tab je tabulka a col sloupecek, kde lze duplicity najit.
Re: mssql - mazani duplicit
dobrej napad!
ale: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
tyhle slozitejsi sql dotazy nepouzival :(
EDIT: nebo lze pouze zapisovat data, ktery v tabulce nejsou ?
pro upresneni - duplicitni je cely radek
EDIT2:
Kód:
delete from zamestnanci
where exists
(select telefon, count(*)
from zamestnanci
group by telefon
having count(*) > 1)
mi logicky smaze vsechny, ktery nejsou primo 1 - ja bych potreboval od kazdyho radku zachovat 1 unikatni
Re: mssql - mazani duplicit
Oops, nj :) Co takhle s mezi tabulkou? Sice imho trosku prasacke, ale funkcni.
Kód:
create table zamestnanci_2;
insert into zamestnanci_2 from
select *
from zamestnanci
group by telefon;
drop table zamestnanci;
rename table zamestnanci_2 to zamestnanci;
Popr. create temporary table zamestnanci_2;, ale to nevim jestli mssql umi.
PS: pisu v mysql syntaxi, do mssql to uz snad nejak napasujes :)
Re: mssql - mazani duplicit
mezitabulku jsem taky zkousel...ale byl by problem pri opakovanym spouteni...
nakonec jsem to vyresil takhle:
Kód:
create unique index XX on zamestnanci (telefon,[jméno pracovníka],útvar,název,zařazení) with ignore_dup_key
nevim jak je to cisty reseni, ale funguje to :) treba se to nekomu bude hodit
kazdopadne diky Jediku, zase jsem se neco naucil :)
Re: mssql - mazani duplicit
Citace:
Původně odeslal
pajkus
mi logicky smaze vsechny, ktery nejsou primo 1 - ja bych potreboval od kazdyho radku zachovat 1 unikatni
Pravda :)
Skus:
Kód:
DELETE FROM table a
WHERE EXISTS (SELECT 1 FROM table b
WHERE a.COL1 = b.COL1
AND a.ROWID <> b.ROWID);
COMMIT;
Pricom ekvivalent rowid pre mssql si najdi v dukumentacii