我有一张表,与People表有一对多的关系。我想为以下名称生成一个地址行:' HisFirst& HerFirst他们最后'或类似乔&& ;; Jane Doe'。这将作为地址标签的第一行。我的查询目前返回类似于' Joe Doe& Jane Doe'。所以你看到姓氏是多余的。我的查询如下。如何修改以获得我想要的结果?我尝试了基于性别和IF / ELSE / THEN的CASE语句。我也试图嵌套这两种类型。我终于尝试连接2个select语句,但不断返回多行 - 所以MySQL引发了异常。
SELECT
GROUP_CONCAT(People.FName, ' ', People.LName ORDER BY Gender DESC SEPARATOR ' & ') AS `HouseholdName`
FROM Households
LEFT JOIN People
ON Households.HouseholdID = People.HouseholdID
GROUP BY
Households.HouseholdID
男性为2,女性为1。
如果只有一个人属于"家庭"它将一个人的名字作为' Jane Doe'返回,以便该部分正常工作。
答案 0 :(得分:1)
由于People
已经拥有HouseholdID
,您实际上不需要进行加入。
SELECT
CONCAT(GROUP_CONCAT(People.FName ORDER BY Gender DESC SEPARATOR ' & '), ' ', People.LName)
AS `HouseholdName`
FROM People
GROUP BY
People.HouseholdID, People.LName;