221 votes

Comment sélectionner le dernier enregistrement d'une table en SQL ?

Voici un exemple de code pour sélectionner tous les enregistrements d'un tableau. Quelqu'un peut-il me montrer comment sélectionner le dernier enregistrement de ce tableau ?

select * from table

Quand je l'utilise : SELECT * FROM TABLE ORDER BY ID DESC LIMIT J'obtiens cette erreur : Ligne 1 : syntaxe incorrecte près de 'LIMIT'. Voici le code que j'utilise :

private void LastRecord()
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["HELPDESK_OUTLOOKConnectionString3"].ToString());

    conn.Open();
    SqlDataReader myReader = null;
    SqlCommand myCommand = new SqlCommand("SELECT * FROM HD_AANVRAGEN ORDER BY " +
                "aanvraag_id DESC LIMIT 1", conn);
    myReader = myCommand.ExecuteReader();
    while (myReader.Read())
    {
        TextBox1.Text = (myReader["aanvraag_id"].ToString());
        TextBox1.Text += (myReader["wijziging_nummer"].ToString());
        TextBox1.Text += (myReader["melding_id"].ToString());
        TextBox1.Text += (myReader["aanvraag_titel"].ToString());
        TextBox1.Text += (myReader["aanvraag_omschrijving"].ToString());
        TextBox1.Text += (myReader["doorlooptijd_id"].ToString());
        TextBox1.Text += (myReader["rapporteren"].ToString());
        TextBox1.Text += (myReader["werknemer_id"].ToString());
        TextBox1.Text += (myReader["outlook_id"].ToString());
    }
}

0 votes

Eh bien, il faut commander quelque chose. Avez-vous une clé primaire ? Peut-être un ID ?

0 votes

Que voulez-vous dire par "dernier enregistrement" ? Avec la plus haute valeur de la colonne clé primaire ?

1 votes

2011, c'était il y a de nombreuses années. Aujourd'hui, vous devriez utiliser offset 0 rows fetch first 1 row only - car il est conforme à la norme ANSI SQL et fonctionne avec la plupart des bases de données modernes.

8voto

Jenna Leaf Points 11

Dans la conception de votre tableau, il est toujours bon d'avoir un identifiant de ligne automatique, tel que

 [RowID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL

alors vous pouvez identifier votre dernière ligne par

 select * from yourTable where rowID =  @@IDENTITY

7voto

Bostone Points 14208

Si vous avez un champ auto-incrémenté (disons ID ) alors vous pouvez faire quelque chose comme : SELECT * FROM foo WHERE ID = (SELECT max(ID) FROM foo)

6voto

Adrian Points 328

Presque toutes les réponses supposent que la colonne ID est ordonnée (et peut-être auto incrémentée). Il y a des situations, cependant, où la colonne ID est no ordonné, donc l'instruction ORDER BY n'a aucun sens.

Le dernier ID inséré n'est pas toujours le plus élevé, il s'agit simplement de la dernière entrée (unique).

Une solution possible pour une telle situation est de créer un identifiant de ligne à la volée :

SET @r = 0;
SELECT * FROM (SELECT *, (@r := @r + 1) AS r_id FROM my_table) AS tmp
    ORDER BY r_id DESC LIMIT 1;

5voto

SELECT * FROM table ORDER BY Id DESC LIMIT 1

2voto

jeje Points 1808

Le dernier n'est que le premier lorsque vous inversez votre commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X