作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表帖子,类别
。在帖子表中,我将类别值存储为逗号分隔的字符串,如 5,8,23,7
。在显示帖子时,我只想将帖子类别显示为逗号分隔,例如 Flower, Birds, Animals
。所以我尝试了一些查询,但没有任何帮助我得到它。帖子表示例。
ID Post title categories
3 Example Post 5,7,23,8
类别表将是这样的
ID name
5 Flowers
7 Animals
8 Birds
23 Naturals
我想要这样的结果
ID Post Tile Category
3 Example Post Flowers, Animals, Birds
为此,我尝试了这个查询,但没有帮助我得到它。
SELECT post.ID, post.Post_title, (SELECT cat.name FROM Categories as cat WHERE cat.ID IN (post.category)) AS Categories FROM Posts as post
它只返回一个类别,它只检索第一个类别名称。
最佳答案
如果您只是必须使用该架构,您可以尝试如下操作:
select P.ID, P.Title, (
select group_concat(C.name SEPARATOR ', ')
from Categories C
where LOCATE(CONCAT(C.ID, ','), P.categories) > 0
or LOCATE(CONCAT(', ', C.ID), P.categories) > 0
) as categories
from Post P;
这很棘手,因为在逗号分隔的列表中,值要么出现在逗号之前,要么出现在逗号之后,同时考虑到列表开头或结尾的值。您不能只使用直接子字符串,否则您将获得与“类别”值“1, 2, 555”相匹配的类别 ID 5。
关于mysql - 如何获取从此查询中以逗号分隔的所有类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686494/
我是一名优秀的程序员,十分优秀!