<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>B.log &#187; informatica</title>
	<atom:link href="http://www.pistulinux.it/blog/archives/category/informatica/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pistulinux.it/blog</link>
	<description>B[dot]log</description>
	<lastBuildDate>Mon, 19 Apr 2010 16:58:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/it/</creativeCommons:license>
		<item>
		<title>Trovare ed eliminare record (semi-)duplicati in SQL</title>
		<link>http://www.pistulinux.it/blog/archives/108</link>
		<comments>http://www.pistulinux.it/blog/archives/108#comments</comments>
		<pubDate>Tue, 22 Sep 2009 17:25:07 +0000</pubDate>
		<dc:creator>*aLeX*</dc:creator>
				<category><![CDATA[informatica]]></category>
		<category><![CDATA[appunti]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.pistulinux.it/blog/?p=108</guid>
		<description><![CDATA[Lo ammetto: non é certo la cosa più complicata del mondo eliminare le righe duplicate in un database; quando serve però non viene mai in mente un modo per farlo. Questo post lo categorizzo quindi come mio promemoria! Perché (semi-)duplicati? Parto dall'esempio pratico: aggiungere una chiave ad una tabella già piena di dati. Ovviamente, per [...]]]></description>
			<content:encoded><![CDATA[<p>Lo ammetto: non é certo la cosa più complicata del mondo eliminare le righe duplicate in un database; quando serve però non viene mai in mente un modo per farlo.<br />
Questo post lo categorizzo quindi come mio <em>promemoria</em>!</p>
<p>Perché (semi-)duplicati?<br />
Parto dall'esempio pratico: aggiungere una chiave ad una tabella già piena di dati.<br />
Ovviamente, per la <a href="http://it.wikipedia.org/wiki/Legge_di_Murphy" target="_blank">legge di Murphy</a>, i valori dei campi che dovrebbero diventare chiave non saranno mai tutti diversi. Voglio quindi eliminare dalla tabella i record con chiavi uguali, preservandone solo una copia per ognuno.</p>
<p>Poniamo che la nostra tabella di chiami table1 con campi field1,field2,field3 (la fantasia nel dare i nomi é il mio forte). Vogliamo far diventare field1 e field2 chiave primaria. Per eliminare i duplicati eseguiamo:</p>
<p><code>SELECT *<br />
FROM db.table1 as t2<br />
WHERE (t2.field1,t2.field2,t2.field3) not in (<br />
SELECT t1.field1,t1.field2, min(t1.field3)<br />
FROM db.table1 as t1<br />
group by t1.field1,t1.field2)<br />
</code></p>
<p>Fatto! Come preannunciato niente di emozionante... <img src='http://www.pistulinux.it/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Ovviamente la regola <code>min(t1.field3)</code> puo' essere cambiata a piacimento per conservare il record piu' conveniente ai fini dell'applicazione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pistulinux.it/blog/archives/108/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/it/</creativeCommons:license>
	</item>
	</channel>
</rss>
