2017-07-14 16 views
-2

我有两个表,看起来像该字符串柱内部存在的项目获取计数

项目

  • ID(INT)
  • 名(为varchar)
  • category_ids(VARCHAR)

在category_ids中有一个字符串,可以是“”,“1,3,7”或“4”o R “1,6,9” - 这个数字是类别ID

分类

  • ID

我想知道有多少(INT)

  • 名(VARCHAR)项目在每个类别

  • +1

    您可以使用FIND_IN_SET() –

    +3

    如果您的项目和类别只有多对多的表,那会更容易。 –

    +2

    然后,如果可能的话,应该首先修复_broken_系统;这应该正确_normalized_,而不是被存储为一个逗号分隔的字符串。 – CBroe

    回答

    0

    因此搜索解决方案后,我需要说的两件事

    1)此任务可以通过使用)功能函数调用FIND_IN_SET((如苏雷什Kamrushi建议)

    SELECT COUNT(*) FROM Items WHERE FIND_IN_SET("1",category_ids) 
    

    2来解决)最好不要使用这种表的连接结构的 - 想想让你的数据库使用多对多关系表进行归一化