2012-06-26 28 views
0

如何選擇MySQL表中的最後一行?如何選擇無ID增量的最後一行

我正在插入數據,我需要從上一行檢索列值。

(我使用PHP的方式。)這樣

table1 
****************** 
cate_id | task_id | start_date |  end_date | line | 

1   2  30/04/2012  26/06/2012 text 
3   1  26/06/2012  27/06/2012 text 
2   1  27/06/2012  01/01/9999 text 

的table1的東西有在該表的NO an auto_increment

而我的情況是更新表中現有的最後一行,然後插入一個新的。

+0

你在使用訂單嗎?你能顯示錶格的結構嗎? – jcho360

+0

已更新,現在對你來說很清楚@ jcho360 – sophie

回答

5

你編輯的問題等等,這裏的更新

SELECT MAX(cate_id) AS last_cate_id FROM table; 

,或者你可以得到一張ID:

SELECT MAX(cate_id)+1 AS next_cate_id FROM table; 

沒有交易,這是用於插入相同cate_id非常脆弱的!

如果你不能使用它們,例如因爲MyISAM,你可以插入select。

INSERT INTO table 
(cate_id, task_id ..) 
VALUES 
((SELECT MAX(cate_id)+1 AS next_cate_id FROM table), 1) 
+0

cate_id不是table1的id增量。 – sophie

+0

您沒有指定您需要的最大列值,所以只需簡單地將cate_id更改爲該列的名稱 – cichy

+0

要澄清一些事情,不使用自動增量或時間戳字段mysql不能返回最後一行,則使用每個選擇來檢索隨機結果,因爲mysql表格不是最後添加數據的文本文件,並且可以讀取最後一行。 – cichy

1

如果你沒有ORDER BY您將無法獲得「LAST」值或第一,因爲訂單不會是相同的(必須的),如果你不具備自動遞增你怎麼能知道哪一個是第一個還是最後一個?如果你使用日期或自動增量你將能夠得到這個,但是,可以說你有一個訂單'column1'你可以做類似的事情:

select * from table1 order by `column1` desc limit 1