Mysql 查找CSV列值匹配的记录

Mysql 查找CSV列值匹配的记录,mysql,Mysql,我正在制作一个网站。在数据库中,我有一个类似这样的文章表: id | name | cats | etc. ------------------------------------------------------ 1 | "alice" | "this, that, those, them" | 2 | "bob" | "this, that, those" | 3 | "carol" |

我正在制作一个网站。在数据库中,我有一个类似这样的文章表:

id | name    | cats                           | etc.
------------------------------------------------------
1  | "alice" | "this, that, those, them"      | 
2  | "bob"   | "this, that, those"            |
3  | "carol" | "this, banana, cupcake"        |
4  | "dave"  | "other, unrelated, words"      |
5  | "errol" | "those, them, fishstick"       |
在查看一篇文章时,我还想根据常见类别的数量显示一些最相关的文章

例如,如果我在看《爱丽丝》的文章,我想(按偏好顺序)挑选鲍勃(共有3只猫)、埃罗尔(2只)、卡罗尔(1只)


我知道,如果数据被标准化(例如,我可以这样做),这会更容易,但不幸的是,这不是一个真正的选项。

我最终创建了两个额外的表,并在每次保存某些内容时用正确标准化的数据填充它们。这些表与现有表一起运行,因此它不是最干净的解决方案,但它可以工作,并且查询速度非常快。

您最好更改数据库的结构。看看。为什么规范化不是一个选项?除了在MySQL脚本中编写字符串解析/比较过程(我保证这并不有趣)之外,这是实现这一点的唯一方法。如果您将它推广到PHP、Perl或类似的语言中,这也不会太糟糕。如果您必须有一个仅MySQL的答案,那么存储的proc或字符串解析函数可能是您唯一的答案@“大混乱将军”的兴奋程度是正确的。但是有很多例子。@ethrbunny:你当然可以把它推到脚本层,但是你为什么要首先使用数据库呢?如果你打算自己重新编制索引,也可以将所有内容都存储在纯文本中。这听起来像是OP被当前的DB存储和模式卡住了。如果可以改变的话,我会从@PLB所说的话开始,对它进行重组。