2011-03-04 69 views
52

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

select * from table 

当我使用:SELECT * FROM TABLE ORDER BY ID DESC LIMIT 我得到这个错误:第1行:附近有语法错误 '限价'。 这是我使用的代码:

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

那么,你必须订购的东西。你有主键吗?也许是一个ID? – alexn 2011-03-04 08:48:45

+0

“最后一张唱片”是什么意思?主键列的值最高? – 2011-03-04 08:49:03

+0

请定义最后 – 2011-03-04 08:49:55

回答

140

没有任何进一步的信息,这些信息数据库等,我们能做的最好的是一样的东西

Sql Server的

SELECT TOP 1 * FROM Table ORDER BY ID DESC 

MySql的

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

top 1会拿第一个,不是吗? – SamekaTV 2011-03-04 08:53:50

+11

是的,但这就是为什么你通过** DESC **订购的原因** – 2011-03-04 08:54:18

+1

但是,如果您使用DESC订购一百万条记录,它会减慢您的查询@AdriaanStander – 2017-02-28 04:11:46

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

这是MySQL! – SamekaTV 2011-03-04 10:30:08

5
SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1 

是的,这是MySQL和SQL服务器:

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

这给出了一个错误!我认为这是SQL,但它是MySQL – SamekaTV 2011-03-04 10:29:21

+1

编辑到SQL Server,但是您没有在问题中指定您的DBMS。 – Simon 2011-03-04 10:34:34

10

假设你有一个ID列:

SELECT TOP 1 * 
    FROM table 
ORDER 
    BY Id DESC; 

而且,这将在SQL Server上运行。我认为你可能需要使用MySQL:

SELECT * 
    FROM table 
ORDER 
    BY Id DESC 
LIMIT 1 

但是,我不是100%确定这一点。

编辑

看着其他的答案,现在我100%相信,我与MySQL的说法正确的是:O)

编辑

刚刚看到您的最新评论。你可以这样做:

SELECT MAX(Id) 
    FROM table 

这会得到你最高的Id号码。

+0

SELECT MAX(id)FROM data 完美的作品! – 2017-03-21 10:37:01

2

最后一个只是当您颠倒您的订购时的第一个。

+0

当我在声明中提到DESC时,对吧? – SamekaTV 2011-03-04 10:29:47

-2

在Oracle中,你可以这样做:

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

这是可能的方式之一。

3

得到最后SQL的数据库使用此SQL字符串

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

输出:

你的数据库的最后一行!

+0

与oracle一起工作也很好,而且比排序更快 – MaKiPL 2018-02-05 10:09:15

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

请解释你的答案或参加[我如何写一个好的答案?](https://stackoverflow.com/help/how-to-answer) – NatNgs 2018-01-10 15:54:46

+1

感谢您的代码片段,它可能会提供一些即时的帮助。通过说明为什么这是一个很好的解决方案,并且使它对未来的读者有更多的帮助,它可以大大提高(https://meta.stackexchange.com/q/114762)其教育价值,但不完全相同的问题。请编辑您的答案以添加解释,并指出适用的限制和假设。 – GrumpyCrouton 2018-01-10 16:16:12

相关问题