2011-03-04 159 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

相關問題