2013-11-22 53 views
-1

我如何在克隆時解決此問題?字段列表中的列'user_id'是ambiguou

字段列表中的'user_id'字段不明確......爲什麼?

這裏是我的查詢:

Insert into user_table Select * from user_table 
    where user_id = 21 on duplicate KEY 
    UPDATE user_id =LAST_INSERT_ID(user_id). 
+1

對錶名使用'aliases'。 sql語法分析器很困惑,你指的是哪個'user_id'列。 – SajjadHashmi

+1

使用'AS'定義表和檢索的列,例如'從表1爲T1,其中t1.id = 21' – Razorphyn

+0

插入USER_TABLE爲t1 SELECT * FROM USER_TABLE爲T1 選擇*其中t1.user_id = 21重複密鑰 UPDATE t1.user_id = LAST_INSERT_ID(user_id)。?我對嗎? – Nandakumar

回答

0

與您查詢的問題是,你正在做的整個行,並試圖將其插入到相同的表,與主密鑰一起。你需要做的是選擇所有其它列除主鍵,然後插入到表,使SQL爲自動增量的ID如下:

insert into user_table (c1, c2, ...) 
    select c1, c2, ... 
    from user_table 
    where user_id = 1 

C1,C2,......其他的列比你的主鍵(user_id)

PS這麼晚纔回復很抱歉。週末聚會! ;)

+0

沒有相同errorss .... – Nandakumar

+0

哦,對。在您對原始文章發表評論之後(我似乎沒有足夠的回購評論),但並不是那樣。你是否試圖從表中拉出一個特定的行並將其插入到同一個表中?如果這就是你想要的,那麼還有一種不同的方式。請解釋你想達到的目標。 – DetourToNirvana

+0

我的問題是,我必須克隆user_table行並插入用戶表中的所有列。用戶表使用主鍵user_id。當我克隆並插入我得到錯誤「重複的ID」。我怎麼能與去年插入標識 – Nandakumar