2015-09-05 174 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字段的值,移动到一个数组并将其与新值进行比较以确保不会在该字段中插入重复项。像光标这样的东西可能适合你。