这是一个从表中选择所有记录的示例代码。有人能告诉我如何选择该表的最后一条记录吗?

select * from table

当我使用:选择*从表顺序由ID DESC限制 第1行:'LIMIT'附近的语法不正确。 这是我使用的代码:

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());
    }
}

当前回答

MS SQL Server已经支持ANSI SQL FETCH FIRST很多年了:

SELECT * FROM TABLE
ORDER BY ID DESC 
OFFSET 0 ROWS FETCH FIRST 1 ROW ONLY

(适用于大多数现代数据库。)

其他回答

在没有任何进一步信息的情况下,我们能做的最好的数据库是什么

Sql Server

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

在表设计中使用自动行标识符始终是一种良好的实践,例如

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

,那么你可以通过

 select * from yourTable where rowID =  @@IDENTITY 

当你颠倒顺序时,最后一个就是第一个。

几乎所有的答案都假设ID列是有序的(可能是自动递增的)。但是,在某些情况下,ID列没有排序,因此ORDER BY语句没有意义。

最后插入的ID可能并不总是最高的ID,它只是最后一个(唯一的)条目。

对于这种情况,一个可能的解决方案是动态创建一个行id:

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

在Oracle中,你可以这样做:

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

这是一种可能的方法。