如何做一个适当的内部联接?

时间:2017-04-08 13:20:46

标签: mysql

我有这个应用程序,我需要进行查询并有两列。这是我的两列和各自的行:

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

2 个答案:

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

答案 1 :(得分:1)

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

使用GROUP_CONCAT()

尝试MySQL的答案

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