[sql] hoe laagst id uit lijst halen?

Pagina: 1
Acties:

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 14:54
ik heb een tabel
code:
1
2
3
4
5
id | file
=================================
1  | /mnt/cdrom/Deftones/Mx.mp3
2  | /mnt/cdrom/nirvana/Dumb.mp3
3  | /mnt/cdrom/Korn/Trash.mp3

id is auto_increment ed.
nu wil ik dat hij de file met het laagste id eruit haalt.
want die stond er als eerste in (fifo)
welke select heb ik hiervoor nodig?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:20
Sorteren op 1 en dan limit met 1 :)

dus
code:
1
SELECT FROM tabel ORDER BY id LIMIT 1

Verwijderd

select top 1 id from tabel order by id desc
(dit is de mssql manier mysql heeft geloof ik iets van limit om het aantal records te bepereken)

  • pimlie
  • Registratie: November 2000
  • Laatst online: 19-09 19:50
SELECT ... ORDER BY id ASC

dan is de eerste waarde die je terugkrijgt degene met de laagste id.

Edit =>
sorry, ben nog een beetje traag, net terug van mijn werk ;)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:20
Op zaterdag 29 september 2001 13:34 schreef Yarvieh het volgende:
select top 1 id from tabel order by id desc
(dit is de mssql manier mysql heeft geloof ik iets van limit om het aantal records te bepereken)
Dat heb je dus goed :)

Verwijderd

In neem aan dat dit een mysql database is?

Probeer iets met MIN(...).

Iets als:

SELECT MIN(id) FROM tabel;

Of wat misschien ook zou kunnen:

SELECT id FROM tabel ORDER BY id LIMIT 1;

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 15-09 12:33
Met die ORDER BY kan het wel maar da's een stuk minder efficient al helemaal als er geen index op zit..

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 11-09 10:38

Killemov

Ik zoek nog een mooi icooi =)

Als je een degelijk (O)RDBMS hebt, helaas dus geen mysql, dan kun je nested queries gebruiken en anders moet je ze uit elkaar halen en het met de scripttaal oplossen.

select file from tabel where id = (select min(id) from tabel)

Maaruh ... dit is ECHT basis SQL, dus pak in het vervolg EERST een boek of handleiding en kom dan pas hier vragen.

Hey ... maar dan heb je ook wat!


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:01
Jongens, wat bazelen jullie toch allemaal over sorteren en limit voor zo'n eenvoudig probleem?

De beste oplossing is hier wel al aangeven door Infinitive maar ik herhaal ze nogmaals:

gebruik MIN()
code:
1
SELECT MIN(id) FROM table

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:01
Op zaterdag 29 september 2001 23:45 schreef Killemov het volgende:
Als je een degelijk (O)RDBMS hebt, helaas dus geen mysql, dan kun je nested queries gebruiken en anders moet je ze uit elkaar halen en het met de scripttaal oplossen.

select file from tabel where id = (select min(id) from tabel)

Maaruh ... dit is ECHT basis SQL, dus pak in het vervolg EERST een boek of handleiding en kom dan pas hier vragen.
Dit kan eenvoudiger door:
code:
1
SELECT MIN(id), file FROM tabel GROUP BY file

https://fgheysels.github.io/


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zondag 30 september 2001 11:41 schreef whoami het volgende:

[..]

Dit kan eenvoudiger door:
code:
1
SELECT MIN(id), file FROM tabel GROUP BY file
Niet echt. Met deze query select je gewoon de tabel in z'n geheel. (tenzij je dubbele bestandsnamen hebt)

Verwijderd

Mensen mensen, toch... hier is ECHT maar een goed andwoord mogelijk hoor..

SELECT MIN(id) FROM (tabelnaam).

Klaar. Er zijn andere mogelijkheden inderdaad (sommige hierboven correct genoemd), maar die zijn stukken inefficienter.

Edit:
Als je per se ook de file wilt hebben en niet alleen de ID dan moet je dat zo doen:
SELECT id, file FROM (tabelnaam)
WHERE id = (SELECT MIN(id) FROM (tabelnaam)

evt. kun je de id nog weglaten uit je uiteindelijke resultaat. (dus SELECT file FROM ...)

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zondag 30 september 2001 19:14 schreef Blade het volgende:
Mensen mensen, toch... hier is ECHT maar een goed andwoord mogelijk hoor..

SELECT MIN(id) FROM (tabelnaam).

Klaar.
Jongen jongen toch... dan heb jij de vraag ECHT niet gelezen...
nu wil ik dat hij de file met het laagste id eruit haalt.
Edit:
En dat was dus al gezegd. Maar werkt niet in databases die geen subqueries ondersteunen. Waar LIMIT 1 dingen dus weer van pas komen...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 01 oktober 2001 01:25 schreef Onno het volgende:
En dat was dus al gezegd. Maar werkt niet in databases die geen subqueries ondersteunen. Waar LIMIT 1 dingen dus weer van pas komen...
mijn mening is dat als een programma die geen subqueries ondersteunt, je per definitie geen database kunt noemen.

En zijn antwoord was goed volgens de TOPIC. (laagste ID) maar soms is consequentie ver te zoeken.

[edit:spelfout]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Wat is er mis met de SELECT TOP 1 oplossing :?
(als hier sprake is van MSSQL database)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 01 oktober 2001 12:06 schreef r-e-m het volgende:
Wat is er mis met de SELECT TOP 1 oplossing :?
(als hier sprake is van MSSQL database)
Onnodige sort.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Toch is de peformance van SELECT TOP 1 sneller dan van SELECT * FROM Bla WHERE Bla.Id = (SELECT MIN(id) FROM Bla)
:?
Pagina: 1