2015-09-05 2 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

Какая СУБД вы используете? Postgres? Oracle? –

ответ

0

Если вы хотите обновить столбец и добавить значение просто сделать: -

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

Это просто добавляет значение к существующему значению в SQL SERVER db по крайней мере, другие базы данных могут иметь разные методы конкатенации. Я думаю, что ваши вопросы указывают на фундаментальную проблему дизайна в вашей базе данных, и я бы предложил переосмыслить это.

+0

Я сделал с этим: '$ newUser =", ". $ UserID;' и 'UPDATE multiusers SET user_id = user_id + '". $ NewUser. "' WHERE hwid = '". $ Hwid. "' Но error: 'Усеченное неправильное значение DOUBLE: ', 5'' – SomeTouch

0

Вы обрабатываете поле в виде таблицы. Даже когда вы можете это сделать, это очень плохой подход. У вас должно быть столько записей на многопользовательской таблице, сколько у вас у вас. Но если вы настаиваете на своем подходе, вам придется создать довольно сложный запрос для получения значения поля userid, перейти к массиву и сравнить его с новым значением, чтобы убедиться, что вы не вставляете дубликаты в поле. Для вас может работать что-то вроде курсора.

Смежные вопросы