2011-03-04 106 views
52

Este es un código de muestra para seleccionar todos los registros de una tabla. ¿Puede alguien mostrarme cómo seleccionar el último registro de esa tabla?¿Cómo seleccionar el último registro de una tabla en SQL?

select * from table 

Cuando uso: SELECT * FROM TABLE ORDER BY ID DESC LIMIT me sale este error: Línea 1: Sintaxis incorrecta cerca de 'límite'. Este es el código que utilizo:

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

Bueno, tienes que pedir algo. ¿Tienes una clave principal? Tal vez una identificación? – alexn

+0

¿Qué quiere decir con "último registro"? Con el valor más alto de la columna de clave principal? –

+0

defina el último –

Respuesta

140

Sin ningún tipo de información adicional, que la base de datos, etc lo mejor que podemos hacer es algo así como

servidor SQL

SELECT TOP 1 * FROM Table ORDER BY ID DESC 

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1 
+0

top 1 tomará el primero, ¿no? – SamekaTV

+11

Sí, pero es por eso que ordena por ** DESC ** –

+1

Pero si utilizó el pedido de DESC para un millón de registros ralentizará su consulta @AdriaanStander –

2
SELECT * FROM table ORDER BY Id DESC LIMIT 1 
+1

esto está en MySQL !! – SamekaTV

5
SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1 

Sí, esto es MySQL, SQL Server:

SELECT TOP 1 * FROM Table ORDER BY ID DESC 
+0

¡Esto da un error! Pensé que esto es SQL pero es MySQL – SamekaTV

+1

Editado a SQL Server, sin embargo, no especificó su DBMS en la pregunta. – Simon

10

Asumiendo que tiene una columna de ID:

SELECT TOP 1 * 
    FROM table 
ORDER 
    BY Id DESC; 

Además, esto va a funcionar en SQL Server. Creo que MySQL es posible que necesite usar:

SELECT * 
    FROM table 
ORDER 
    BY Id DESC 
LIMIT 1 

Pero no estoy 100% seguro de esto.

EDITAR

En cuanto a las otras respuestas, ahora estoy 100% seguro de que estoy en lo correcto con la declaración de MySQL: o)

EDITAR

acaba de ver su último comentario. Usted podría hacer:

SELECT MAX(Id) 
    FROM table 

Esto le dará el número más alto de identificación.

+0

SELECCIONAR MAX (id) FROM datos ¡Funciona perfecto! –

2

La última es solo la primera cuando invierte su orden.

+0

cuando menciono DESC en la declaración, ¿verdad? – SamekaTV

-2

En Oracle, puede hacerlo:

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

Esta es una de las maneras posibles.

3

para conseguir la última fila de un uso esta cadena SQL base de datos SQL:

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

Salida:

última línea de su base de datos!

+0

Funciona completamente bien con Oracle también y es más rápido que ordenar – MaKiPL

0
SELECT * FROM TABLE WHERE id = (SELECT MAX(id) FROM TABLE); 
+0

Explique su respuesta o haga una visita guiada en [¿Cómo puedo escribir una buena respuesta?] (Https://stackoverflow.com/help/how-to-answer) – NatNgs

+1

Gracias por este fragmento de código, que puede brindar alguna ayuda inmediata. Una explicación adecuada [mejoraría en gran medida] (https://meta.stackexchange.com/q/114762) su valor educativo al mostrar por qué esta es una buena solución al problema, y ​​lo haría más útil para futuros lectores con similares, pero no idénticas, preguntas. Edite su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. – GrumpyCrouton

Cuestiones relacionadas