无法在GROUP_CONCAT DERIVED查询中选择DISTINCT

问题描述 投票:0回答:1

在这个Query

SELECT u.`id`, nc.`con` FROM `users` u
LEFT JOIN (
  SELECT n.`uid`, GROUP_CONCAT(DISTINCT c.`content`) AS `con` 
  FROM `names` n
  INNER JOIN `contents` c ON n.`uid` = c.`aid`
  GROUP BY n.`uid`
) nc ON nc.`uid` = u.`id`
WHERE u.`age` = 15

我想有效地使用SELECT DISTINCT c.content值,

我根本不想使用DISTINCT,如果可能的话想使用GROUP BY,因为使用DISTINCT就像隐藏问题,

现在我已经做了这个查询,但它甚至没有在SELECT DISTINCT GROUP_CONCAT与许多ROWs。

我想要的是在不使用DISTINCT的情况下获得结果:

con: A, B

我得到的结果是:

con: A,B,B,A,A,B

如果有更好的方法可以做到这一点,我愿意接受它。

mysql sql
1个回答
1
投票

你可能GROUP BY在子查询然后group_concat领域。

你可以尝试一下。

SELECT u.`id`, group_concat(nc.`con`)
FROM `users` u
LEFT JOIN (
  SELECT n.`uid`, c.`content` AS `con` 
  FROM `names` n
  INNER JOIN `contents` c ON n.`uid` = c.`aid`
  GROUP BY n.`uid`,c.`content`
) nc ON nc.`uid` = u.`id`
WHERE u.`age` = 15

SQLFiddle

© www.soinside.com 2019 - 2024. All rights reserved.