2011-03-29 382 views
10

我敢肯定,MySQL沒有在INSERT INTO表輸出[欄值]是MSSQL那樣 - http://msdn.microsoft.com/en-us/library/ms177564.aspx(或http://blogs.msdn.com/b/sqltips/archive/2005/06/13/output-clause.aspx的MySQL與OUTPUT INSERT像MSSQL

什麼是一個簡單的方法來複制呢? (我正在把一個MSSQL應用程序移動到MySQL上,'OUTPUT'是一個唯一的標識符和一個int,所以也許我只需要選擇MAX(int)並添加一個,然後在插入之前生成一個UID)

謝謝

+0

列上是否存在AUTO_INCREMENT?如果是,請使用'LAST_INSERT_ID'。如果不是,SELECT MAX必須這樣做,確實... – Konerak 2011-03-29 07:56:57

+0

請注意,MS SQL也具有類似於'LAST_INSERT_ID()':SET'@logSqlId = SCOPE_IDENTITY();' 的功能您可以使用logSqlId作爲輸出參數,或者從中選擇'SELECT'。 對於未來的讀者,如果從大型商業系統之一遷移,可以考慮Postgres。它的功能與高端數據庫系統更爲接近,在某些情況下它超越了它們。 – 2016-03-14 16:48:40

回答

10

如果此值是一個自動遞增字段,則可以在運行插入後運行SELECT LAST_INSERT_ID();,然後您將獲得插入此字段的最後一個值。 請參閱:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

+0

輝煌的,沒有使用MySQL很多,所以沒有意識到這一功能,應該做的伎倆,我可以很容易地生成一個GUID /唯一標識符 – AaronM 2011-03-29 09:31:33

+0

Thanx @Galz這真是太神奇了...... – Learner 2013-02-01 22:26:33

+2

可悲的是,這並沒有幫助畢竟,如果要進行批量插入,尤其是你需要在事實之後進行進一步匹配,並且需要比id更多的內容 - 從而產生額外的選擇。 – 2013-09-18 18:42:51