2008-11-24 12 views

Répondre

15

La dernière rangée a-t-elle l'ID le plus élevé? Si oui, je pense que cela fonctionnerait:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE) 

MySQL ne permet subselects dans la version actuelle, à droite?

Cependant, dans la plupart des cas, il fonctionnerait probablement mieux si vous sélectionniez toutes les lignes et que vous filtriez ensuite les données indésirables dans votre application.

+0

MySQL 4.1 a soutenu les sous-requêtes depuis plus de quatre ans! Bien que certaines sociétés d'hébergement utilisent encore MySQL 4.0, il manque cette fonctionnalité. –

+0

Hé, je le pensais. Mais la dernière fois que j'ai utilisé MySQL, c'était 3.X, et des trucs comme ça ne marchaient pas. Principalement en utilisant MS SQL Server de nos jours. –

2

SELECT t1.columns Distinct de table t1
INNER JOIN t2 tableau t1.id < t2.id

Dans mon expérience, MySQL aime cette technique, remontant à plusieurs versions.

+0

Probablement devrait être SELECT DISTINCT t1.columns ... –

+0

Je suis sûr que vous avez oublié un DISTINCT là-bas. – LeppyR64

1

Une autre technique que je ne vois pas ici est énuméré

SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1; 

Cela vous donnera les enregistrements ordonnés par descendant identifiant sauf la première, qui est, sauf le dernier dans l'ordre original.
Notez qu'avec cette méthode, ne prendra que 10000 enregistrements, cependant ce nombre peut être aussi élevé que vous le souhaitez mais ne peut pas être omis.
L'avantage de cette méthode est que vous pouvez commander par ce que vous voulez.
L'inconvénient est qu'il vous donne les enregistrements commandés du dernier au premier.
Enfin, il vaut bien noter que les autres méthodes fonctionne ici très bien

Questions connexes