【问题标题】:sql group by not showing all resultssql group by 不显示所有结果
【发布时间】:2015-02-26 17:24:38
【问题描述】:

所以我有一个查询,获取所有用户和所有 user_items。但是当我按 user.id 分组时,它只显示 1 个项目。当我删除组时,它会显示所有项目,但会重复信息。

我想要这样的

Dan | Laptop
      Car
      Bike
      Shed

Mik | Computer
      House

这是sql

SELECT items.name, users.username
FROM users
INNER JOIN items
ON items.userid = users.id
GROUP BY users.id

【问题讨论】:

  • 这可能是你应该在你的演示/报告代码中处理的东西,而不是在服务器上。
  • 怎么样,只有 2 个 foreach 循环之类的?
  • 是的,也许是这样的;这取决于您用于呈现数据的软件/代码等 - 一些报告系统可以自动执行此操作。
  • 是的,就是这样。您也可以使用group_concat(items.name),这将在一个字段中为您提供所有项目。

标签: mysql sql arrays join


【解决方案1】:

您可以尝试使用GROUP_CONCAT() 函数:

SELECT u.username, GROUP_CONCAT(i.name)
FROM users u
JOIN items i ON i.userid = u.id
GROUP BY u.id;

它的显示会略有不同,但与您要完成的任务非常相似。

【讨论】:

    【解决方案2】:

    按两者分组,因此您不会折叠每个用户的所有项目,并且项目中没有重复项

    SELECT items.name, users.username
    FROM users
    INNER JOIN items
    ON items.userid = users.id
    GROUP BY users.id, items.name
    

    rest 必须在您的演示文稿代码中处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多