mysql - 无法在 GROUP_CONCAT DERIVED 查询中选择 DISTINCT

标签 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 高效值(value)观,

我不想使用DISTINCT完全,如果可能的话想使用 GROUP BY ,自从使用DISTINCT就像隐藏问题一样,

现在我已经做了这个查询,但它甚至没有SELECT DISTINCTGROUP_CONCAT有很多ROW s。

我想要的是不使用 DISTINCT 得到的如果可能的话结果:

con: A, B

我得到的是结果:

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

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

最佳答案

您可以对子查询进行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

关于mysql - 无法在 GROUP_CONCAT DERIVED 查询中选择 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059257/

相关文章:

php - 读取大TXT到MYSQL超时

mysql - SQL转置和groupby

php - 通过 PHP Mysql 搜索

c# - 更新记录

mysql - SQL 返回 double 数据(可能是错误的 SQL 查询)

sql server 按数字选择列

mysql - 如何为 MYSQL 中的列添加唯一键?

php - mysql数据库auto_id在数据库中排列错误

sql - Kaminari 在 Postgres 的大表上使用 COUNT(*) 很慢

sql - 将间隔划分并聚合到桶中