mysql文章查询时如何获取文章的flag字段在对应表中的名称

情景是:我的文章表(news)中有一个flag字段,它的类型是set集合,可能的值是一些字母,如"a,p,d",这些字母对应着一个diyflag表,表中有这些字母对应的中文名称,两个表如下:

文章表news(其中flag字段为set集合类型)

id title flag
1 标题1 a,b,c
2 标题2 a,b
3 标题3 b,c



属性表diyflag

id flag_value flag_name
1 a 头条
2 b 精选
3 c 推荐

表结构如上图了,我现在想要的结果是,查询的结果,直接显示flag字段为对应的中文名(如头条,精选),而不是a,b之类的字母。
请教各位兄弟了,多谢指点!

阅读 1.6k
1 个回答

这个怎么说呢,不建议在sql语句中进行运算(关键是一条sql如何取出你想要的结果我还真不知道...)
我有个折中的思路,你参考一下:

  1. 取出news表你所需要的列表数据形成$news_list;
  2. array_column取出$news_list的flag形成一个$flag_list集合;
  3. 循环这个$flag_list,array_merge($new_flag_list, explode(',', $flags))一下形成一个新的new_flag_list,这个new_flag_list里面的flag值都是单独的
  4. array_unique($new_flag_list)去重,并根据去重后的结果用flag_value in (new_flag_list)查询diyflag表里的数据,形成flag_value => $flag_name键值对
  5. 循环$new_list,替换abc
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题