2015-09-05 366 views
0

在我的SQL表中,有一列名爲「user_id」的逗號分隔值,如下所示:a,b,c,d和我只是想知道如何在不刪除舊值的情況下更新此列。我想將此列更新爲a,b,c,d,e,並在其他步驟中更新爲a,b,c,d,e,f。用逗號分隔值的更新列

我寫此查詢,但它刪除舊的價值觀和不無法更新以逗號分隔值列表:

UPDATE multiusers SET user_id = '" . $userID . "' WHERE hwid = '" . $hwid."' 
+5

修復你的數據庫,所以你有一個聯結表,而不是一個逗號分隔列表。 –

+2

最佳方法:標準化您的數據庫,以便在*一個字段*中不存儲*多個值*。否則:在應用程序代碼中組合您的字符串,然後用新的字符串值更新數據庫。就SQL而言,你所存儲的只是一個字符串。它不知道「逗號分隔值」是什麼。 – David

+1

您正在使用哪些DBMS? Postgres的?甲骨文? –

回答

0

如果您想更新一列,並附加一定的價值,做到: -

UPDATE multiusers 
SET user_id = user_id + "new user" 
WHERE hwid = $hwid 

這只是附加一個值到SQL SERVER數據庫中的現有值,至少其他數據庫可能有不同的連接方法。我認爲你的問題指向你的數據庫中的一個基本設計問題,我會建議重新考慮這個問題。

+0

我做了這個:'$ newUser =「,」。$ userID;'和'UPDATE multiusers SET user_id = user_id +'「。$ newUser。」'WHERE hwid ='「。$ hwid。」''但是有這個錯誤:'截斷不正確的DOUBLE值:',5'' – SomeTouch

0

您正在將一個字段視爲一個表。即使你能做到,這也是一種非常糟糕的做法。你應該在多用戶表上擁有和userid一樣多的記錄。但是如果你堅持你的方法,那麼你將不得不創建一個非常複雜的查詢來檢索userid字段的值,移動到一個數組並將其與新值進行比較以確保不會在該字段中插入重複項。像光標這樣的東西可能適合你。