|
| [MySQL] vise ens poster Fra : Thomas Elmkjær |
Dato : 09-11-02 17:58 |
|
Hej
Jeg skal lave en query der viser alle de poster hvor en given værdi optræder
flere gange. F.eks alle de records hvor emailadressen er den samme. Det
nærmeste jeg er kommet er group by hvor count(email) er > 1, men der viser
den jo kun 1 record.
Hvordan viser man alle de records hvor count(email)>1?
Med andre ord skal jeg vise de records der IKKE er distinct.
Håber jeg udtrykker mig klart nok, og at jeg kan finde hjælp her.
Mvh
Thomas
| |
Peter Brodersen (10-11-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 10-11-02 18:13 |
|
On Sat, 9 Nov 2002 17:57:57 +0100, "Thomas Elmkjær" <thomas@mnl.dk>
wrote:
>Jeg skal lave en query der viser alle de poster hvor en given værdi optræder
>flere gange. F.eks alle de records hvor emailadressen er den samme. Det
>nærmeste jeg er kommet er group by hvor count(email) er > 1, men der viser
>den jo kun 1 record.
Prøv med: SELECT COUNT(*) AS antal, email FROM tabel GROUP BY email
HAVING antal > 1;
HAVING bliver udført efter din GROUP BY. Det lyder som om, det er det,
du leder efter.
--
- Peter Brodersen
| |
Jakob Bock (10-11-2002)
| Kommentar Fra : Jakob Bock |
Dato : 10-11-02 18:21 |
|
Thomas Elmkjær skrev:
> Jeg skal lave en query der viser alle de poster hvor en given værdi optræder
> flere gange. F.eks alle de records hvor emailadressen er den samme. Det
> nærmeste jeg er kommet er group by hvor count(email) er > 1, men der viser
> den jo kun 1 record.
Det tror jeg umiddelbart ikke du kan gøre i een forespørgsel. Du bliver
derfor nok nødt til at hente resultet og så lave en ny forespørgsel baseret
på det første resultat. Du kan evt. lave det direkte i MySQL vha. en
midlertidig tabel, hvilket nok er hurtigere end at arkivere resultatet i en
PHP-variable først.
Eksempel:
CREATE TEMPORARY TABLE tmp ( id SMALLINT UNSIGNED NOT NULL UNIQUE ) TYPE =
HEAP;
INSERT INTO tmp SELECT id FROM x GROUP BY value HAVING COUNT(value) > 1;
SELECT x.* FROM tmp, x WHERE tmp.id = x.id ORDER BY value;
Venlig hilsen
Jakob Bock
| |
Thomas Elmkjær (09-11-2002)
| Kommentar Fra : Thomas Elmkjær |
Dato : 09-11-02 18:53 |
|
tak skal du have..det er nok det jeg leder efter. jeg prøver mig lidt frem
mvh
Thomas
"Jakob Bock" <jakob@tegnestuen-ilt.dk> wrote in message
news:B9F4540C.37AC%jakob@tegnestuen-ilt.dk...
> Thomas Elmkjær skrev:
>
> > Jeg skal lave en query der viser alle de poster hvor en given værdi
optræder
> > flere gange. F.eks alle de records hvor emailadressen er den samme. Det
> > nærmeste jeg er kommet er group by hvor count(email) er > 1, men der
viser
> > den jo kun 1 record.
>
> Det tror jeg umiddelbart ikke du kan gøre i een forespørgsel. Du bliver
> derfor nok nødt til at hente resultet og så lave en ny forespørgsel
baseret
> på det første resultat. Du kan evt. lave det direkte i MySQL vha. en
> midlertidig tabel, hvilket nok er hurtigere end at arkivere resultatet i
en
> PHP-variable først.
>
> Eksempel:
>
> CREATE TEMPORARY TABLE tmp ( id SMALLINT UNSIGNED NOT NULL UNIQUE ) TYPE
=
> HEAP;
>
> INSERT INTO tmp SELECT id FROM x GROUP BY value HAVING COUNT(value) > 1;
>
> SELECT x.* FROM tmp, x WHERE tmp.id = x.id ORDER BY value;
>
>
> Venlig hilsen
> Jakob Bock
>
| |
|
|