MySql: добавить данные в столбец без удаления предыдущих - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь сделать систему сохранения заметок. У меня есть страница входа в систему html, и когда пользователь входит в систему, появляется форма для ввода некоторых заметок для хранения. У меня есть 3 столбца в моей базе данных mysql: имя пользователя, пароль и сохраненные данные.

Например, предположим, что у пользователя есть такие: Username:david | Password:david | StoredData: apple,orange.

Есть ли способ выполнить запрос, поэтому, когда пользователь возвращается и добавляет еще одну заметку НЕ, чтобы перезаписать предыдущие заметки (яблоко, апельсин)

вместо этого, чтобы добавить еще одну заметку в базу данных, как: я добавляю банан. Теперь база данных должна быть StoredData:apple,orange,banana.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Возможно, вам придется подумать, если значение уже существует в столбце и не обновляется:

update tablename
set storeddata = case 
  when find_in_set('banana', storeddata) then storeddata
  else concat_ws(',', storeddata, 'banana')
end
where username = 'David';

См. demo .

0 голосов
/ 04 апреля 2020

Вы можете использовать конкатенацию строк: concat_ws() пригодится для этого, поскольку пропускает значения null (поэтому учитывается случай, когда столбец изначально пуст):

update mytable 
set stored_data = concat_ws(',', stored_data, 'banana')
where name = 'david'

Обратите внимание, однако, что ваш дизайн не нормализован должным образом. У вас есть отношение 1-N между пользователем и его заметками: у вас должна быть отдельная таблица для хранения заметок с каждой заметкой в ​​отдельной строке вместо хранения списка с разделителями:

table users

name    | password
david   | ...

table notes

user_name  | note
david      | apple
david      | orange
david      | banana

чтение: Действительно ли плохо хранить список с разделителями в столбце базы данных? .

...