ugrás a tartalomhoz

MySQL LIMIT

Bageera · 2004. Okt. 13. (Sze), 10.34
Sziasztok,
hogy lehet egy tablabol az utolso N sort kivenni?

SELECT * FROM tabla LIMIT 0, 20
ez a tabla elejerol szed ki 20-at. mit kell irni a 0 es a 20 helyere hogy a vegerol vegye?

Koszi.
 
1

Megközelítés

Bártházi András · 2004. Okt. 13. (Sze), 11.06
Rosszul közelíted meg. Így kell:

Első 20:
SELECT * FROM table ORDER BY id LIMIT 0,20
Utolsó 20:
SELECT * FROM table ORDER BY id DESC LIMIT 0,20
-boogie-
2

erre gondoltam en is, csak ne

Anonymous · 2004. Okt. 13. (Sze), 11.21
erre gondoltam en is, csak nekem a tabla az eredeti sorrendben kell. es a Te query-d megforditja. vissza tudom valahogy forditani?
3

Szerintem két lépésben

chx · 2004. Okt. 13. (Sze), 12.06
CREATE TEMPORARY TABLE temp_x SELECT...
SELECT FROM temp_x ...
4

Nem tabla

sajt · 2004. Okt. 13. (Sze), 13.10
A limit nem egy tabla sorait adja vissza, hanem egy lekrdezeset.

Szerintem is csak ket lepesben lehet, valamilyen programnyelvbol:
1. select count(*) From tabla
aztan
2. select * from table limit $c;

(Nem tudom, mashol hogyan van, de mysql-ben nincs a limitben in select)

/* sajt */
5

order by id desc - 2. szavazat

Anonymous · 2004. Okt. 13. (Sze), 23.36
boogie +oldása a korrekt.
azért is érdemes mindig megadnod a rendezést, mert
a táblából egyébként fizikai sorrendben nyered vissza az
adatokat.
ha pedig egy adatot kitörlsz mondjuk a 10. helyről,
miközben a tábládban már 200 elem van, akkor egy új elem
a kitörölt fizikai helyére kerül, s akkor rendezés nélkül
máris borul a sorrend.
tehát vagy legyen egy id-d, ami autoincrement, vagy tegyél
el pl. egy datetime típusú adatot a bejegyzés időpontjáról.

ha bármelyiket megtetted, akkor már működik a fordított
sorrendű lekérés, amelybe beleteheted a limited.

xxx
6

ja, s ha fordított sorrendbe

Anonymous · 2004. Okt. 14. (Cs), 00.42
ja, s ha fordított sorrendben akarod kiíratni az adatokat,
akkor a lekérdezés eredményét fordított sorrendben járod be.
mer' gondolom, vmit csak akarsz kezdeni az eredményekkel:-))

php-ban pölö így műxik:
<?php
    $link = mysql_connect ("localhost", "user", "password")
        or die ("Nem lehet csatlakozni");
    mysql_select_db ("tmp" , $link)
        or die ("Nem t'ok csatlakozni az adatbáztishoz");
    $eredmeny = mysql_query ("SELECT * FROM tmp")
or die ("Érvénytelen lekérdezés");

    # Sorok betöltése fordított sorrendben
    for ($i = mysql_num_rows ($eredmeny) - 1; $i>=0; $i--) {
        if (!mysql_data_seek ($eredmeny, $i)) {
            echo ("Nem tudok a $i. sorra ugorni\n");
            continue;}

        if(!($sor = mysql_fetch_assoc ($eredmeny))){
   continue;}

        echo $sor['name']."<br />\n";
    }

    mysql_free_result ($eredmeny);
    mysql_close ($link);
?>


xxx