[英]A simple way to normalize a table
我有一個這樣的表-這是用戶表的一部分,當用戶注冊時,該表將更新更多行:
user_id languages
1 english, french
2 english,german,french
3 german
4 english, spanish
為了進行小字搜索,我很想將這張桌子變成:
user_id language
1 english
1 french
2 english
2 german
2 french
3 german
4 english
4 spanish
注釋:不創建新表,而只是從用戶表中執行正確的選擇查詢即可。 我正在將mysql與phpmyadmin一起使用。 任何幫助都將受到歡迎。 謝謝。
正如其他人所述,將逗號分隔的值存儲在列中會隨着時間的流逝而引起各種麻煩。 話說回來...
創建一個數字表( 此處描述了一種方法)。 一旦有了它,就可以使用它來將逗號分隔的值拆分為單獨的行:
select lang.user_id,
SUBSTRING_INDEX(SUBSTRING_INDEX(lang.languages, ', ', numbers.n), ', ', -1) language
from numbers
inner join lang on CHAR_LENGTH(lang.languages) - CHAR_LENGTH(REPLACE(lang.languages, ', ', ' ')) >= numbers.n - 1
order by lang.user_id, numbers.n;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.