<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Usuwanie duplikatów]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=262&amp;type=atom"/>
	<updated>2009-08-05T07:15:59Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=262</id>
		<entry>
			<title type="html"><![CDATA[Odp: Usuwanie duplikatów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1121#p1121"/>
			<content type="html"><![CDATA[Dzięki Panowie!
Poradziłem sobie przy użyciu 2ego sposobu gdyż tego wszystkiego okazało się nie byc tak dużo, więc pgadmin + sql i poszło insert, delete, insert ;)

Ale raz jeszcze dziękuję za inny punkt widzenia!]]></content>
			<author>
				<name><![CDATA[roofoos]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=816</uri>
			</author>
			<updated>2009-08-05T07:15:59Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1121#p1121</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Usuwanie duplikatów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1119#p1119"/>
			<content type="html"><![CDATA[[quote]

można to zrobić łatwo i przyjemnie

1. przy DELETE wraz z subselectem w WHERE
2. INSERT INTO X select distinct on (...,...) from Y ...

nie trzeba cursora. Można trzasnąć to jednym zapytaniem
[/quote]

Ad 1. może byc pewnie wiele możliwych warunków. To podam najprostszy przyklad, ktory dziala niestety tylko dla tabel z oidami (ewentualnie z dynamiczną/statyczną kolumną bedącą licznikiem)
Niech tabela t=(i,j), usuwamy duplikaty np poleceniem
[code]
delete from t where oid not in (select  distinct on(i,j) oid from t);
[/code]
Ad.2 Należy wspomnieć że tabela X powinna być wierną kopią Y (wraz z constraintami,..)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-08-02T21:47:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1119#p1119</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Usuwanie duplikatów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1118#p1118"/>
			<content type="html"><![CDATA[można to zrobić łatwo i przyjemnie 

1. przy DELETE wraz z subselectem w WHERE 
2. INSERT INTO X select distinct on (...,...) from Y ...

nie trzeba cursora. Można trzasnąć to jednym zapytaniem :)]]></content>
			<author>
				<name><![CDATA[psocha]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=519</uri>
			</author>
			<updated>2009-08-02T09:12:18Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1118#p1118</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Usuwanie duplikatów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1116#p1116"/>
			<content type="html"><![CDATA[Witam,
pewnie wiecie, więc chętnie skorzystam z pomocy (jeśli będziecie mieli ochotę pomóc przed/w/po weekendzie):
jak szybko usunąć duplikaty z tabeli- oczywiście chodzi mi o połowę duplikatów- tak by stały się unikalnymi danymi względem klucza-pola

Przychodzi mi do głowy tylko kursor, sprawdzanie pola dla każdego wiersza czy jest duplikatem (in select... sql wyławiający duplikaty), oraz usuwanie go jeśli tak i zmiana znacznika z false->true No wypadałoby jeszcze trzymać ostatnią wartość pola, które może być duplikatem - bo jeśli jest taka sama jak poprzednio - to decyduje o zmianie wspomniany znacznik (jesli true - nie usuwamy, bo juz usunięto) , jesli inna- DELETE

Ale może jest coś w rodzaju cudownego zapytania? ;-)


Pozdrawiam]]></content>
			<author>
				<name><![CDATA[roofoos]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=816</uri>
			</author>
			<updated>2009-07-31T13:57:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1116#p1116</id>
		</entry>
</feed>
