2011-02-24 3 views
1

J'ai une requête SQL qui renvoie les 50 premières lignes d'une requête.Requête SQL, spécifiez les meilleurs résultats?

LEFT JOIN users u 
ON c.id = u.id 
ORDER BY c.date DESC LIMIT 50; 

Je voudrais changer la limite de 50 à être dynamique, pour que je puisse préciser les résultats 1-24, 25-50, etc. Comment puis-je modifier la limite de 50 à fonctionner de cette façon?

Merci!

Répondre

3
ORDER BY c.date DESC LIMIT 0, 25; 

ORDER BY c.date DESC LIMIT 25, 25; 

ORDER BY c.date DESC LIMIT 75, 25; 


$page = 0; // 1, 2, 3 
$perPage = 25; 

$query = ' ... ORDER BY c.date DESC LIMIT ' . ($page * $perPage) . ', ' . $perPage; 
+0

Merci, qui a fait l'affaire! – user547794

0

Vous ne pouvez pas. Vous pouvez uniquement récupérer une plage de lignes consécutives à l'aide de LIMIT.

Cependant, vous pouvez fusionner deux résultats dans un UNION:

(
    SELECT 
    ... 
    LEFT JOIN users u 
    ON c.id = u.id 
    ORDER BY c.date DESC LIMIT 1,25; 
) 
UNION 
(
    SELECT 
    ... 
    LEFT JOIN users u 
    ON c.id = u.id 
    ORDER BY c.date DESC LIMIT 25,26; 
) 
0

Si vous ne aimez pas cette virgule, vous pouvez utiliser la syntaxe

LIMIT 0 OFFSET 25 
LIMIT 25 OFFSET 25 
Questions connexes