Avatar billede fatass Nybegynder
12. juni 2003 - 19:43 Der er 24 kommentarer og
1 løsning

Finde sidste 5 forskellige værdier

Hej

jeg skal finde de sidste 5 forskellige forekomster af værdier.

jeg har en tabel, hvor der evt kunne stå:

1
2
3
1
4
6
7
7
7
7
9

resultatet skulle så være:
1
4
6
7
9

Er det muligt at lave sådan en søgning?
Avatar billede schaefner Juniormester
12. juni 2003 - 19:44 #1
hvorfor er 2 og 3 ikke med?
Avatar billede schaefner Juniormester
12. juni 2003 - 19:45 #2
Men denne burde virke:

SELECT DISTINCT felt ORDER BY felt ASC LIMIT 5
Avatar billede fatass Nybegynder
12. juni 2003 - 19:50 #3
Fordi jeg kigger nedefra...
Avatar billede hiks Nybegynder
12. juni 2003 - 19:50 #4
enig med schaefner!!!

- bare lidt for langsom

/hiks
Avatar billede schaefner Juniormester
12. juni 2003 - 19:51 #5
burde 1 så ikke være 3 i dit eget resultat?
Avatar billede fatass Nybegynder
12. juni 2003 - 19:55 #6
nej det burde det da ikke.
Avatar billede disky Nybegynder
12. juni 2003 - 19:55 #7
2 og 3 er ikke med fordi de ikke er blandt de seneste unike tal.

fatass:
Når du indsætter i din tabel skal du også indsætte deres timestamp denkalder vi DT så siger du:

select * from tabel order by DT limit 0,5

Så skulle de virke
Avatar billede hiks Nybegynder
12. juni 2003 - 19:56 #8
narj - for 1 forekommer jo to gange og er før 3 når talrækken er sådan - vel og mærke set nede fra!

schaefner>>> opret en tabel med de samme værdier og kør din sql på den... :o)

/hiks
Avatar billede hiks Nybegynder
12. juni 2003 - 19:58 #9
man behøver da ikke at bruge timestamp for dette på nær hvis det er updates han kører og ikke inserts.

Ved inserts ved de jo altid komme nederst (dog alt efter hvordan strukturen er i hans tabel!)

/hiks
Avatar billede fatass Nybegynder
12. juni 2003 - 20:03 #10
korrekt hiks. Og inserts er det eneste
Avatar billede detox Nybegynder
12. juni 2003 - 20:13 #11
Du skal bruge DESC, hvis du skal have de seneste.
SELECT DISTINCT felt FROM test ORDER BY felt DESC LIMIT 5
Avatar billede fatass Nybegynder
12. juni 2003 - 20:20 #12
Nu er min talrække desværre ikke så gennemtænkt. Hvis jeg havde sat f.eks. et 1-tal ind mellem alle 7'erne skulle resultatet blive: (med en limit på 6 - bare for eksemplets skyld)

3
4
6
1
7
9

Dem den desc ville ødelægge rækkefølgen. Jeg har en række med id og auto_increment. Hvis jeg sætter ORDER BY på den kommer det alligvel forkert ud. Dvs. som om der var sorteret efter tallene
Avatar billede disky Nybegynder
12. juni 2003 - 20:24 #13
Når du har auto increment så brug den som index

Hvad med:

select distinct(dinKolonne) from tabel order by autoinkrement limit 0,5
Avatar billede fatass Nybegynder
12. juni 2003 - 21:30 #14
Jeg har prøvet at gøre det som du skriver Disky. Men den viser det som om det er sorteret efter (dinKolonne) alligevel. Det virker ikke så logisk.
Virker det hos dig?
Avatar billede disky Nybegynder
12. juni 2003 - 21:58 #15
Jeg har lige prøvet med:
select distinct(message), pid from nuke_XForum_posts order by pid desc limit 0,5;

Og det ser ud til at give det korrekte resultat.

Men er ikke sikker da jeg ikke lige har en tabel der passeer til dette problem.
Avatar billede detox Nybegynder
12. juni 2003 - 22:40 #16
SELECT DISTINCT id FROM test ORDER BY auto_increment DESC LIMIT 0,5
Virker for mig.
Avatar billede fatass Nybegynder
13. juni 2003 - 18:54 #17
>select distinct(message), pid from nuke_XForum_posts order by pid desc limit 0,5;

Men det må da lave rav i distinct, når også id er valgt. Så vil der jo aldrig være nogen af resultaterne der er ens. Hvordan det kan virke kan jeg ikke se. Jeg har prøvet at copy/paste og ændre navne, men det virker stadig ikke.

>SELECT DISTINCT id FROM test ORDER BY auto_increment DESC LIMIT 0,5
virker nu ikke for mig. Men hvad mener du med id og auto_increment. Hos mig er det et og samme felt...

For at tage udgangs punkt i noget konkret.

id    topip
1      1
2      1
3      2
4      1
5      3
6      4
7      5
8      6
9      2
10    2
11    2
12    3
13    3

Hvis jeg prøver med:
SELECT DISTINCT (topic), id FROM posts ORDER BY id DESC LIMIT 0,5;

så får jeg bare rowsne med id 13, 12, 11, 10 og 9.
Avatar billede detox Nybegynder
13. juni 2003 - 22:01 #18
Det gør jeg osse, men hvis jeg prøver med:
SELECT DISTINCT topic FROM test ORDER BY id DESC LIMIT 0,5
får jeg: 3,2,6,5,4
Avatar billede detox Nybegynder
13. juni 2003 - 22:05 #19
men der må naturligvis være en måde, hvor man kan få id med uden at ændre på resultatet.
Avatar billede fatass Nybegynder
13. juni 2003 - 22:35 #20
detox> det er godt nok mystisk. Jeg har kopieret det direkte, og jeg får 6,5,4,3,2.
Hvilken version af MySql kører du med?
Avatar billede detox Nybegynder
13. juni 2003 - 22:43 #21
Det er version 4.0.12, hvad er din da?
Avatar billede fatass Nybegynder
13. juni 2003 - 22:51 #22
3.23.56. Sådan noget møg
Avatar billede detox Nybegynder
13. juni 2003 - 22:55 #23
Men den burde da nok virke alligevel. Kan det hænge sammen med din tabelstruktur? Ellers er det måske tid til at opgradere...
Avatar billede fatass Nybegynder
13. juni 2003 - 23:06 #24
Jeg ville hellere end gerne opgradere, men det kan jeg desværre ikke sådan tvinge min host til.

Vedr. tabel struktur har jeg lige prøvet at lave en helt ny table, kun med de 2 felter. Det giver stadig samme resultat
Avatar billede fatass Nybegynder
29. juli 2003 - 19:09 #25
Selvom det ikke kom til at virke synes jeg alligevel du skal have pointene, da din løsning virker på v4.0.12
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester