【发布时间】:2016-01-15 17:33:14
【问题描述】:
我只是想知道当我有以下条目时是否有一种简单的方法:
++++++++++++++++++
+ id + languages +
++++++++++++++++++
+ 1 + DE +
++++++++++++++++++
+ 2 + DE,EN +
++++++++++++++++++
+ 3 + FR +
++++++++++++++++++
我的过程中参数的值是'DE,EN,FR',他找到了以上所有条目。
我用谷歌搜索并找到了解决方案,我必须遍历参数中的所有值并用SUBSTRING 拆分它们并制作一个
FIND_IN_SET(splittedParam, `languages`)
为他们。
有没有更简单(代码更短)的方法?
【问题讨论】:
-
我想你会发现你的数据结构不适合这种事情。您不应该在一列中包含单个值和列表。
-
是的,它叫做规范化,但是你需要改变你的架构。
-
你应该看到这个; stackoverflow.com/questions/3070384/… 作为理解为什么这种结构不好的一种方式。
-
为什么会这样?它是一个列,您可以在其中保存一个或多个预定义 SET 的值:'languages' set('DE','EN','FR') 我不知道为什么 phpMyAdmin 提供这种列类型。跨度>
-
所以你说我应该使用与我的条目表有一对多关系的表 LANGUAGES 而不是 SET 列?
标签: mysql