【问题标题】:Query to obtain value among selected values in a comma separated varchar查询以获取逗号分隔的 varchar 中选定值中的值
【发布时间】:2020-10-25 16:20:57
【问题描述】:

我有一个如下所示的 SQL 表

  title                     genre
--------------------|----------------------         
The Dark Knight     |  Action, Crime, Drama
The Godfather       |  Crime,Drama
Inception           |  Sci-Fi

如何编写一个 Select 查询,以便显示所有类型为“犯罪”的标题

【问题讨论】:

标签: mysql sql select


【解决方案1】:

首先,您应该修复您的数据模型!在一列中存储多个值是一个非常非常非常糟糕的主意。

也就是说,有时我们会被其他人非常非常非常糟糕的决定所困扰。 MySQL为此提供了一个方便的函数find_in_set()。但是您需要没有空格的逗号分隔值。所以:

select t.*
from t
where find_in_set('Crime', replace(genres, ' ', '')) > 0;

【讨论】:

  • 谢谢@GordonLinoff 这成功了!真的很感激只是想知道在类似的情况下,我的电影可能有多种类型,有没有更好的方法将它存储在数据库中(或者你有建议的方法)?
  • @devz。 . . .您应该有一个表movieGenres,每部电影和每种类型都有一行。这是在 SQL 中表示多对多关系的标准方式。
  • 明白了!感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多