Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Distinct op één kolom

Pagina: 1
Acties:
  • 317 views sinds 30-01-2008

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 29-11 20:20
Ik heb een tabel
code:
1
2
3
4
5
6
7
8
9
+------------+-------------------------+
| dim_length | name                    |
+------------+-------------------------+
|          0 | Earth Station McKinley  |
|          0 | Edo God                 |
|          0 | Erewhon                 |
|        467 | Excelsior               |
|        467 | Excelsior (Lakota type) |
+------------+-------------------------+


Nu wil ik uit deze tabel alleen de records met een unieke dim_length selecteren.

SQL:
1
SELECT DISTINCT dim_length, name FROM table


Maar dat werkt natuurlijk niet. Ik snap niet hoe je meerdere kolommen kunt selecteren, maar op één kolom DISTINCT kunt doen. Het voorbeeld op www.w3schools.net en www.mysql.com behandelen alleen DISTINCT op één kolom.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
Dat kan niet.
een distinct werkt op alle kolommen in de select-list.

Je kunt wel met een group by clausule werken...

https://fgheysels.github.io/


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 06-11 21:36

CyberSnooP

^^^^ schrijft --->

Bij mijn weten werkt DISTINCT in MySQL altijd op alle zichtbare kolommen of op alle kolommen in een rij (DISTINCT ROW).

|_____vakje______|


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
CyberSnooP schreef op 18 november 2002 @ 20:16:
Bij mijn weten werkt DISTINCT in MySQL altijd op alle zichtbare kolommen of op alle kolommen in een rij (DISTINCT ROW).


Niet alleen in MySQL volgens mij....

https://fgheysels.github.io/


  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 29-11 20:20
Tnx tot zover ik ga me ff inlezen op GROUP BY

jaja, de echte twiekert kan niet zonder w3schools :)

edit:

Ik snap het toch niet helemaal, kan iemand een simpel voorbeeldje geven?

Verwijderd

select max(name) from table group by dim_length

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 29-11 20:20
OK, ik snap t

SELECT name,dim_length FROM table GROUP BY dim_length ORDER BY.... enz.

Verwijderd

kijk anders eens op http://www.sqlcourse.com of http://www.sqlcourse2.com daar haal ik altijd mijn reference vandaan.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 21-09 16:54

Goodielover

Only The Best is Good Enough.

Wil je alleen de records met een unieke waarde (dus waar niet een tweede of meer van bestaat) of wil je elke waarde maar één keer.

Bij het eerste selecteer de twee velden en heb je in de group by die twee velden staan en in de having clause "count(*) = 1"

Bij het tweede moet je weten welke name je dan wilt tonen: de grootste MAX(name) of de kleinste MIN(name)

[ Voor 0% gewijzigd door Goodielover op 20-11-2002 09:24 . Reden: >1 moest =1 zijn ]


  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06 11:48
code:
1
2
3
4
SELECT fieldname, COUNT(*) AS Occurence
FROM tablename
GROUP BY fieldname
HAVING COUNT(*) = 1


Wil je dan alleen de records laten zien die juist wel meerdere keren voorkomen dan zeg je: HAVING COUNT(*) > 1 (of 2 of 3... etc.)

Fuck me if I'm wrong, but isn't your name Gretchen?


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 17-11 08:40

robjanssen

Software Developer

Wat de topicstarter wil kan helemaal niet.

Hij wil alleen de unieke dim_length selecteren en toch wil hij ook de naam erbij hebben, maar dan wil je dus niet meer een unieke dim_length
Je kunt dus niet meedere kolommen selecteren met maar op 1 kolom een DISTINCT

Als je er even over nadenkt is het ook niet erg logisch.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 21-09 16:54

Goodielover

Only The Best is Good Enough.

Wat hij wil doen kan niet, maar welk probleem hij wil oplossen is nog niet duidelijk. vandaar dat we nu mar aan het raden zijn. Wellicht dat de starter nog eens van zich kan laten horen.

Verwijderd

Misschien een beetje ERG laat maar ik kwam hier toen ik zocht naar dit probleem.

Misschien een beetje vreemd, maar bij mij werkt het gewoon met GROUP BY, hieronder een voobeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE `Testen` (
  `Veld` varchar(20) NOT NULL default ''
)

INSERT INTO `Testen` VALUES ('Waarde');
INSERT INTO `Testen` VALUES ('Waarde');
INSERT INTO `Testen` VALUES ('Waarde');
INSERT INTO `Testen` VALUES ('Nog een waarde');

SQL-query: SELECT Veld FROM Testen GROUP BY Veld

Resultaat:

[ Veld ]
Nog een waarde
Waarde

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Waar was die kick nou weer voor nodig?

Who is John Galt?

Pagina: 1

Dit topic is gesloten.