2011-11-14 56 views
0

其他人設計了這張表,我不允許修改它,所以請耐心等待。使用SQL插入多行 - 手動增加數字的問題

我想從一個表插入多行到另一個。我插入行的表有一個ID,但不會自動遞增。我無法弄清楚如何在插入行時手動增加ID。當前的代碼會引發一個錯誤:

Error running query. Page15.CaseSerial is invalid in the select list becauseit is not contained in either an aggregate function or the GROUP BY clause.

我試過添加一個GROUP BY子句沒有成功。

下面的代碼:

insert into page4 (serial, caseserial, linkserial, type, add1, add2, city, state, orgname, prefername, email, firstname, lastname, salutation, contactstatus, workphone, notes, cellphone, nametype, homephone, fax, zip, payments) 
    select id = max(serial), caseserial, linkserial, type, add1, add2, city, state, 
      orgname, prefername, email, firstname, lastname, salutation, contactstatus, 
      workphone, notes, cellphone, nametype, homephone, fax, zip, payments 
    from page16 

這將是很好,如果我可以寫的東西得到第4頁最高的ID和插入下一個最高。

謝謝!

+2

SQL有哪些味道?該解決方案將有所不同,具體取決於您使用的是什麼RDBM – Andrew

+0

這是一篇關於微軟方法的文章,如果是MSFT db的話。 http://support.microsoft.com/kb/273586 – xQbert

+0

你使用什麼樣的服務器或環境爲你的數據庫?我問,因爲MS Access支持SQL查詢中的DMin()和DMax()查找功能。如果您的服務器支持用戶定義的標量函數,則可能需要爲了您的方便而實現這些函數,並在SQL查詢中使用它們。 –

回答

0
declare @maxId int 

select @maxId = max(yourIdColumn) 
from YourTable 

set @maxId = @maxId + 1 

insert into YourTable (yourIdColumn, ....) 
values (@maxId, ....) 

免責聲明:不知道如何做到這一點轉交給其他RDBMS的,但是這是在考慮的SQL Server。此外,這隻處理插入一個值。如果您需要插入一組值,請讓我知道。

+0

「我試圖從一張表插入多行到另一張。」他讓我們知道:D – xQbert

+0

@xQbert這是真的!感謝您指出(顯而易見)。 ;)我會盡快更新我的答案。 – 2011-11-14 21:47:04

+0

我很高興你以這個意思所表達的精神去表達。不是諷刺,粗魯或粗魯。我正在考慮如何自己做到這一點,你的方法似乎是合理的。 (我希望避免一個遊標,但我無法弄清楚沒有一個遊標。)因此,我認爲這是您的迴應(即您的迴應)的方法。並沒有花更多的時間在它上面。 +我想知道他們使用的是什麼RDBMS。 – xQbert