MySQL将人名命名为邮件列表

时间:2018-05-20 03:13:47

标签: mysql sql

我有一张表,与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'返回,以便该部分正常工作。

1 个答案:

答案 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;