【发布时间】:2015-08-17 20:16:36
【问题描述】:
好的,所以我有一个案例,我想做一个 Group Concat,但也使用 Group Concat 中的同一列作为语句中的 Where 子句,但 不排除由于 Where 导致 Group Concat。知道了?哈哈哈我的意思是:
SELECT posts.id, post.post_date,
GROUP_CONCAT(DISTINCT terms.name ORDER BY terms.name DESC SEPARATOR ';')
FROM posts
INNER JOIN terms on terms.post_id = posts.id
WHERE terms.name = "kittens";
所以我想获取帖子的terms.name =“kittens”的帖子,但是帖子可以有多个terms.name,例如“kittens”、“cats”、“cuteness”等。所以在Group Concat 我希望结果是“kittens;cats;cuteness”(每一个都是与posts.id相关的单独条目)。但是,在 Where 子句中使用“kittens”时,所有 Group Concat 返回的是“kittens”。
如果我说“WHERE terms.name = 'kittens' OR terms.name = 'cats'”,Concat 组返回“kittens;cats”...但我只想搜索一个 terms.name 和获取 Group Concat 中的其余条款。
我该如何解决这个问题?
【问题讨论】:
-
使组在选择中连接一个子查询
-
GROUP_CONCAT()函数需要查询中缺少的GROUP BY子句。这使得 MySQL 从所有选定的行中创建一个组。因为它们没有出现在GROUP BY子句中,所以为posts.id和post.post_date返回的值是来自相应列的一些随机值。 -
@axiac 对不起,这是一个巨大查询的截断版本,只是为了重点关注这一点而忽略了它
标签: mysql group-concat