2009-03-02 79 views
-1
set qv = createobject("adodb.recordset") 
q ="select * from tbl order by ID" 
qv.open q,QuoteConn,3,1,1 
    qv.movelast 
    qid=qv("ID") 
qv.close 

編輯:我需要數據庫中最高的ID。我做對了嗎?

awwww,你們都殺了玩笑。在2009年,我維護這段代碼...

+0

這是2009年,只是,你知道,備案。 – overslacked 2009-03-02 19:34:34

+0

這樣的笑話可能是TheCodeProject.com(http://www.codeproject.com/Feature/CodingHorrors.aspx)中的「編碼恐怖」留言板,但它們不適合本網站。 – 2009-03-02 19:47:15

回答

6

MAX(id)是什麼?

2

更快的方法將是

Q = 「選擇從TBL MAX(ID)」

這將總是導致在單排用一個值(具有最高ID)。

0

如果你覺得古怪,你也可以顛倒SQL順序並選擇最上面的一個。

0

我不知道SQL的你特別的味道,但在很多你可以做,如:

Q =「SELECT * FROM TBL其中ID =(選擇TBL b最大(b.ID)) 「

4

是的,但速度最慢。

不僅如此,你的前提是錯誤的。 不需要需要從數據庫中獲得最高的ID。

我的心理調試能力告訴我你要用這個來創建一個新的ID,並用一條新記錄將該ID插回到數據庫中。這完全是錯誤的做法,並會導致您的網站上的代碼競爭條件。相反,請將您的ID設置爲Identity列,並讓Sql Server自動創建您的ID。然後在使用Sql Server的scope_identity()函數插入後,選擇新的ID返回到結果中。

即使我錯了,你只是想用它來檢索最近的記錄,你真正想要的可能是類似scope_identity()(如果你剛創建新記錄作爲同一會話的一部分)或ident_current(tbl) (如果新記錄可能是由其他人創建的或者是前一段時間創建的)。在這最後一種情況下,你確實應該有別的方法來確定什麼是「最近的」。

0

其他的答案是正確的,我只是建議你給它一個別名,所以你可以訪問它:

select max(ID) as "maxID" from tbl 
... 
qid = qv("maxID") 
相關問題