MySQL LIMIT
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.
■ 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.
Megközelítés
Első 20:
erre gondoltam en is, csak ne
Szerintem két lépésben
SELECT FROM temp_x ...
Nem tabla
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 */
order by id desc - 2. szavazat
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
ja, s ha fordított sorrendbe
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:
$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