如何实现单个mySQL行答案?

时间:2017-09-09 09:29:08

标签: mysql

如何实现单个mySQL行答案?

我有两张桌子:

Table Flats

idFlat INT(11)
Street VARCHAR(45)

表租户

id Tenant INT(11)
Flats_idFlat INT(11)
Surname VARCHAR(45)
Firstname VARCHAR(45)

我的查询

SELECT
    Flats.idFlat,
    Flats.Street,
    Tenants.Surname,
    Tenants.Firstname
FROM
    Flats
        LEFT JOIN
    Tenants ON Flats.idFlat = Tenants.Flats_idFlat
WHERE
    Tenants.Flats_idFlat IS NOT NULL

结果如下,因为John和Peggy住在同一个公寓里:

idFlat    Street        Surname        Firstname
1          Taft Ave     John               Miller
1          Taft Ave     Peggy             Ballot

我正在寻找这样的结果:

idFlat    Street        Surname        Firstname
1           Taft Ave    John/Peggy    Miller/Ballot

我尝试了一些像

这样的CONCAT_WS查询
CONCAT_WS(‘/', Tenants.Surname, Tenants.Firstname) AS Tenants 

但它总是导致单位的多个输出。

1 个答案:

答案 0 :(得分:1)

尝试将GROUP_CONCAT与自定义排序和分隔符一起使用:

SELECT
    f.idFlat,
    f.Street,
    GROUP_CONCAT(t.Surname   ORDER BY t.Surname SEPARATOR '/') AS Surname,
    GROUP_CONCAT(t.Firstname ORDER BY t.Surname SEPARATOR '/') AS Firstname
FROM Flats f
INNER JOIN Tenants t
    ON f.idFlat = t.Flats_idFlat
GROUP BY
    f.idFlat,
    f.Street

请注意,根据where子句中的逻辑,您当前的左连接可能会缩减为内连接。