无法在GROUP_CONCAT DERIVED查询中选择DISTINCT

时间:2018-03-01 21:51:05

标签: mysql sql

在此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甚至没有ROW个。

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

con: A, B

我得到的结果是:

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

如果有更好的方法,我可以打开它。

1 个答案:

答案 0 :(得分: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