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

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

当前回答

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

Sql Server

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

其他回答

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

Sql Server

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

我支持里卡多。实际上最大比排序有效得多。 看到不同之处。它的优秀。

我必须得到最后一行/更新记录(时间戳)

`sqlite> select timeStamp from mypadatav2 order by timeStamp desc limit 1;
 2020-03-11 23:55:00
 Run Time: real 1.806 user 1.689242 sys 0.117062`

`sqlite> select max(timeStamp) from mypadatav2;
 2020-03-11 23:55:00
 Run Time: real 0.553 user 0.412618 sys 0.134340`

如果您的表没有自动递增的值,或者没有好的元素可以排序,那么您可以像这样获得任意集合中项目的任意顺序

SELECT
    [item]
FROM (
    SELECT
        *
        , ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY GETDATE()) 'RN'
    FROM [TABLE]
) RDR 
WHERE [RN] = (
    SELECT
        MAX([RN])
    FROM (
        SELECT
            *
            , ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY GETDATE()) 'RN'
        FROM [TABLE]
    ) RDR 
)

一个重要的警告是,对于较大的数据集,这种方法的性能将非常糟糕。

SELECT * FROM table ORDER BY Id DESC LIMIT 1

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

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

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