【问题标题】:How to do a proper Inner join?如何进行正确的内部连接?
【发布时间】:2017-09-03 19:30:41
【问题描述】:

我有这个应用程序,我需要在其中进行查询并有两列。这是我的两列和相应的行:

Name of table1: Machines(has a row called Machinesnames and a id_group as FK)


Name of table2: Groups (has a row called groupsnames and id_groups as PK)

问题是您在下面看到的查询我得到以下结果

**GroupsNames**  |   **MachinesNames**
       1                machine1

       1         |      machine2

       1         |      machine3

       2         |      machine4

我已经这样做了,但我认为是错误的,请您更正我的查询吗?:

SELECT groups.name,Machines. Machinesnames,Groups.groupsnames FROM Machines INNER JOIN Groups ON Machines.id_group = Groups.id_group

这是我想看到的结果

     **GroupsNames**  |   **MachinesNames**
           1            machine1,machine2,machine3

           2          |   machine4

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您正在寻找group_concat:

    select g.name,
        group_concat(m.Machinesnames)
    from Machines m
    inner join Groups g on m.id_group = g.id_group
    group by g.name;
    

    【讨论】:

    • 谢谢各位。这就是为什么我喜欢这个社区,因为像你这样的人:)
    【解决方案2】:

    您的查询对于内部联接是正确的,但是从您的预期输出来看,您需要一个聚合列表。

    使用 GROUP_CONCAT() 为 MySQL 尝试这个答案

    Aggregate function in MySQL - list (like LISTAGG in Oracle)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-03
      • 2015-05-11
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2019-03-22
      • 2011-03-18
      相关资源
      最近更新 更多