2009-07-17 11 views
2

Comment puis-je récupérer le premier et le dernier enregistrement d'une table.Comment obtenir le premier et le dernier enregistrement de DB

Note: Je ne vais pas faire commander par

+7

question n'a pas de sens ..... –

+4

1 -> Je peut être un peu controversé ici, mais je pense qu'une fois que vous êtes familier avec les quelques SGBDR et ont couru un nombre important des requêtes SQL, vous savez qu'il n'y a pas de promesse pour l'ordre des lignes dans une table sauf si vous les ORDRE intentionnellement. Cependant, comment les débutants le savent-ils? C'est une projection complètement naturelle que la table a la première et la dernière rangée. – quosoo

+0

Répondre à votre modification: Vous devez trier si vous voulez un semblant de commande. Les bases de données ne sont pas stockées dans l'ordre, et il n'y a pas d'ordre défini * sauf si spécifié par un ordre par. Ergo, vous avez regardé une réponse et l'avez ensuite rejetée face à toutes les preuves que vous ne pouvez pas faire ce que vous voulez sans une clause «order by» ou plusieurs sous-requêtes. Ces deux réponses sont ici. Choisissez celui qui vous convient le mieux. – Eric

Répondre

11

Cela dépend ce que vous entendez par "premier" et "dernier".

Vous pouvez "ORDER BY" une colonne spécifique, et choisissez "LIMIT 1", puis "ORDER BY ... DESC" pour obtenir l'inverse.

par exemple.

SELECT * FROM table ORDER BY col LIMIT 1 
SELECT * FROM table ORDER BY col DESC LIMIT 1 

... et si vous voulez à la fois dans la même requête:

SELECT * FROM table ORDER BY col LIMIT 1 
UNION 
SELECT * FROM table ORDER BY col DESC LIMIT 1 
+0

pourquoi ne pas ajouter une déclaration d'union entre les requêtes? – lexu

+0

Aucune raison! Cela dépend si la question le veut ou non. Je vais modifier :) –

2
SELECT TOP 1 * FROM Table ORDER BY 1 
SELECT TOP 1 * FROM Table ORDER BY 1 DESC 

en supposant que votre première colonne est la clé

(bien que cela fonctionne dans t-sql)

4

question ne fait pas vraiment de sens, mais, en supposant que vous parler de la première et la dernière ligne d'une Ce tableau fonctionnerait mais il serait préférable de faire deux requêtes distinctes et suppose que vous avez une colonne d'ID numérique. par exemple MySQL:

select * from test where id = (select max(id) from test) 
union 
select * from test where id = (select min(id) from test) 
Questions connexes