web-dev-qa-db-fra.com

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

Ceci est un exemple de code permettant de sélectionner tous les enregistrements d'une table. Quelqu'un peut-il me montrer comment sélectionner le dernier enregistrement de cette table?

select * from table

Lorsque j'utilise: SELECT * FROM TABLE ORDER BY ID DESC LIMIT J'ai l'erreur suivante: Ligne 1: syntaxe incorrecte près de 'LIMIT' . Il s'agit du 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());
    }
}
79
SamekaTV

Sans autres informations, quelle base de données, etc., nous pouvons au mieux faire quelque chose comme:

Serveur SQL

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1
218
Adriaan Stander

En supposant que vous ayez une colonne Id:

SELECT TOP 1 *
  FROM table
 ORDER
    BY Id DESC;

En outre, cela fonctionnera sur SQL Server. Je pense que vous devrez peut-être utiliser MySQL:

SELECT *
  FROM table
 ORDER
    BY Id DESC
 LIMIT 1

Mais je ne suis pas sûr à 100% de cela.

MODIFIER

En regardant les autres réponses, je suis maintenant sûr à 100% que je suis correct avec la déclaration de MySQL: o)

MODIFIER

Je viens de voir votre dernier commentaire. Vous pourriez faire:

SELECT MAX(Id)
  FROM table

Cela vous donnera le numéro d'identification le plus élevé.

17
Neil Knight
SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1

Oui, c'est mysql, SQL Server:

SELECT TOP 1 * FROM Table ORDER BY ID DESC
7
Simon

pour obtenir la dernière ligne d'un SQL-Database utilisez cette chaîne SQL:

SELECT * FROM TableName WHERE id=(SELECT max(id) FROM TableName);

Sortie:

Dernière ligne de votre base de données! 

6
Ricardo Fercher
SELECT * FROM TABLE WHERE id = (SELECT MAX(id) FROM TABLE);

SELECT MAX(id) signifie obtenir le plus grand identifiant de la table, il retourne donc un nombre, qui est l'identifiant maximal maintenant utilisé avec WHERE id = maxId Vous pouvez obtenir la ligne avec le plus grand identifiant, qui correspond à la dernière ligne si vous utilisez auto_increment.

4
Mohamed Emad
SELECT * FROM table ORDER BY Id DESC LIMIT 1
3
user142019

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

2
jeje

Dans votre conception de table, il est toujours recommandé d’utiliser 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 
0
Jenna Leaf

Je pense que cela devrait le faire.

declare @x int;
select @x = max(id) from table_name;
select * from where id = @x;
0
$sql="SELECT tot_visit FROM visitors WHERE date = DATE(NOW()) - 1 into @s                
$conn->query($sql);
$sql = "INSERT INTO visitors (nbvisit_day,date,tot_visit) VALUES (1,CURRENT_DATE,@s+1)";
$conn->query($sql);
0
Hani Charara

Dans Oracle, vous pouvez faire:

SELECT *
FROM (SELECT EMP.*,ROWNUM FROM EMP ORDER BY ROWNUM DESC)
WHERE ROWNUM=1;

C'est l'un des moyens possibles.

0
GeeDee
select ADU.itemid, ADU.startdate, internalcostprice 
from ADUITEMINTERNALCOSTPRICE ADU

right join

   (select max(STARTDATE) as Max_date, itemid 
   from ADUITEMINTERNALCOSTPRICE
   group by itemid) as A

on A.ITEMID = ADU.ITEMID
and startdate= Max_date
0
Panjas51