Ask a Question related to MySQL, Design and Development.
-
Nicholas Sherlock #1
Find duplicates
Hey all,
I want to give the user a dialog where they can find pairs of duplicate
entries in the database and resolve these down to a single record. I
have this working fine so far, but I just noticed that it falls down
when there are 3 or more duplicates of a given key. Which is not
surprising, given my query:
SELECT p1.id, p2.id,
FROM participator as p1
LEFT JOIN participator AS p2
ON (p1.key=p2.key AND p1.id<p2.id)
WHERE (p2.key IS NOT NULL)
If duplicates only come in pairs, this'll work fine: The query will
return pairs of distinct duplicate entries. Of course, the lame
p1.id<p2.id trick falls down with 3 or more entries. I want only the ids
from 2 rows of a set of duplicate items, so that the user can fix them
up. What trick am I missing? :)
Cheers,
Nicholas Sherlock
--
[url]http://www.sherlocksoftware.org[/url]
Nicholas Sherlock Guest
-
SQL Duplicates
Hi all, I'm facing the next problem: I've got a table like this: Name Size Total Martens 200 2 Martens 300 ... -
"find duplicates" sql query
Access from Office 2000 "Hans" <hansb@sorry.nospam.com> wrote in message news:eer8XdbMEHA.628@TK2MSFTNGP11.phx.gbl... work -
checking duplicates
Hi all, i'm trying to figure out how I can check for duplicates entries in an array and remove the duplicate. Example: 23,23,39,40,44,44 should... -
>1 mio files but find duplicates
Hello. During my life as a macintosh user I collected many CDROMS (about 300 pieces). Now I got the Idea to copy all that on a (really) big HD... -
No Duplicates
Is there a way so you make filemaker not accept any duplicate enteries into a certian fields ie; UserName: <field> Is there a way to make it... -
Captain Paralytic #2
Re: Find duplicates
Nicholas Sherlock wrote:
I'm not totally sure about how you wish to handle greater than 2 dupes> Hey all,
>
> I want to give the user a dialog where they can find pairs of duplicate
> entries in the database and resolve these down to a single record. I
> have this working fine so far, but I just noticed that it falls down
> when there are 3 or more duplicates of a given key. Which is not
> surprising, given my query:
>
> SELECT p1.id, p2.id,
> FROM participator as p1
> LEFT JOIN participator AS p2
> ON (p1.key=p2.key AND p1.id<p2.id)
> WHERE (p2.key IS NOT NULL)
>
> If duplicates only come in pairs, this'll work fine: The query will
> return pairs of distinct duplicate entries. Of course, the lame
> p1.id<p2.id trick falls down with 3 or more entries. I want only the ids
> from 2 rows of a set of duplicate items, so that the user can fix them
> up. What trick am I missing? :)
>
> Cheers,
> Nicholas Sherlock
but would:
SELECT p1.id, p2.id,
FROM participator as p1
LEFT JOIN participator AS p2
ON (p1.key=p2.key AND p1.id<p2.id)
WHERE (p2.key IS NOT NULL)
GROUP BY p1.id
HAVING COUNT(*) = 2
work for you?
Captain Paralytic Guest
-
Captain Paralytic #3
Re: Find duplicates
Captain Paralytic wrote:
Oops, maybe make that:> Nicholas Sherlock wrote:
>> I'm not totally sure about how you wish to handle greater than 2 dupes> > Hey all,
> >
> > I want to give the user a dialog where they can find pairs of duplicate
> > entries in the database and resolve these down to a single record. I
> > have this working fine so far, but I just noticed that it falls down
> > when there are 3 or more duplicates of a given key. Which is not
> > surprising, given my query:
> >
> > SELECT p1.id, p2.id,
> > FROM participator as p1
> > LEFT JOIN participator AS p2
> > ON (p1.key=p2.key AND p1.id<p2.id)
> > WHERE (p2.key IS NOT NULL)
> >
> > If duplicates only come in pairs, this'll work fine: The query will
> > return pairs of distinct duplicate entries. Of course, the lame
> > p1.id<p2.id trick falls down with 3 or more entries. I want only the ids
> > from 2 rows of a set of duplicate items, so that the user can fix them
> > up. What trick am I missing? :)
> >
> > Cheers,
> > Nicholas Sherlock
> but would:
>
> SELECT p1.id, p2.id,
> FROM participator as p1
> LEFT JOIN participator AS p2
> ON (p1.key=p2.key AND p1.id<p2.id)
> WHERE (p2.key IS NOT NULL)
> GROUP BY p1.id
> HAVING COUNT(*) = 2
>
> work for you?
SELECT p1.key, p1.id, p2.id,
FROM participator as p1
LEFT JOIN participator AS p2
ON (p1.key=p2.key AND p1.id<p2.id)
WHERE (p2.key IS NOT NULL)
GROUP BY p1.key
HAVING COUNT(*) = 2
Captain Paralytic Guest
-
Captain Paralytic #4
Re: Find duplicates
Nicholas Sherlock wrote:
Just noticed that the SQL that you have posted is invalid!> Hey all,
>
> I want to give the user a dialog where they can find pairs of duplicate
> entries in the database and resolve these down to a single record. I
> have this working fine so far, but I just noticed that it falls down
> when there are 3 or more duplicates of a given key. Which is not
> surprising, given my query:
>
> SELECT p1.id, p2.id,
> FROM participator as p1
> LEFT JOIN participator AS p2
> ON (p1.key=p2.key AND p1.id<p2.id)
> WHERE (p2.key IS NOT NULL)
>
> If duplicates only come in pairs, this'll work fine: The query will
> return pairs of distinct duplicate entries. Of course, the lame
> p1.id<p2.id trick falls down with 3 or more entries. I want only the ids
> from 2 rows of a set of duplicate items, so that the user can fix them
> up. What trick am I missing? :)
>
> Cheers,
> Nicholas Sherlock
Try this:
SELECT p1.`key` , p1.id, p2.id
FROM ndups AS p1
LEFT JOIN ndups AS p2 ON ( p1.`key` = p2.`key`
AND p1.id < p2.id )
WHERE (
p2.`key` IS NOT NULL
)
GROUP BY p1.`key` , p1.`id`
HAVING COUNT( * ) =1
Or maybe, ignore my
Captain Paralytic Guest



Reply With Quote

