2016-12-14 58 views
2

與更新整個字段相比,是否可以在字段中添加數據?是否可以在已存在現有數據的字段中添加數據?

例如,在一個表

ID FName Interests 
1 Geno Math 

是否有可能爲我寫的,而不是更新的興趣其中id =和重新輸入數學,科學的SQL語句。相反,我可以插入價值科學,並將其插入興趣領域後,目前存儲的數據?

ID FName Interests 
1 Geno Math, Science 

回答

1

你可以試試這個:

Update [YourTable] 
SET Interests= CONCAT(Interests,',Science') 
WHERE Id=[someid] 

您可以通過使用CONCAT()與現有的列值附加,science更新。

0

您可以使用CONCAT()函數,但最後您必須執行UPDATE操作。

update tbl1 
set Interests = concat(Interests,', Science') 
where id =1; 
0

你不需要重新輸入,只有連擊 -

update t 
set col=concat_ws(',',col,'new att') 
where ... 

但你真的不希望這樣做。
糟糕的設計。

1

這是可能的,但不要這樣做!數據庫中有兩個不同的實體,「用戶」(某種)和「興趣」。

來存儲這些數據的正確方法是使用一個表,每個用戶和興趣一行:

create table UserInterests (
    UserInterestId int auto_increment primary key, 
    UserId int not null, 
    Interest varchar(255), 
    constraint fk_UserInterests_UserId foreign key (UserId) references ?(id) 
); 

然後你就可以很輕鬆地分配一個新的興趣:

insert into UserInterests 
    values ($userId, $interest); 

(注:您應該使用這些查詢的參數,而不是將這些值放入查詢字符串中。)

爲什麼這是「正確」的方式?請考慮以下幾點:

  • SQL列(除JSON和XML之類的特殊類型外)被設計爲存儲單個值。
  • SQL有一個偉大的數據結構來存儲列表;它被稱爲
  • MySQL沒有特別強大的字符串函數。
  • 對利益的疑慮不能利用利益。
  • 像獲取興趣列表這樣的簡單事情真的非常難以用字符串拼湊在一起。
相關問題