【问题标题】:Show duplicate row in single row mysql在单行mysql中显示重复行
【发布时间】:2017-03-13 12:10:41
【问题描述】:

我有两张桌子。一个是 TblPeople(ID(PK),firstname,lastname,Embo.. ),另一个是 TBLembolization(EmbolizationID(PK),PeopleID(FK),EmbolizationDate,.

这是我使用姓名搜索具有栓塞日期的人的查询...

        SELECT tblpeople.FirstName,details.peopleID,details.embolizationDate FROM tblpeople 
        LEFT JOIN tblembolizations AS details ON  tblpeople.ID=details.peopleID 
        WHERE tblpeople.Embo = 1 and concat(FirstName,' ',LastName) like '%alina%'
        UNION
        SELECT tblpeople.FirstName,details.peopleID,details.embolizationDate FROM tblpeople 
        LEFT JOIN tblembolizations AS details ON  tblpeople.ID=details.peopleID 
        WHERE tblpeople.Embo != 1 and concat(' ',FirstName,' ',LastName,' ') like '%alina%'

结果是:

    ............Result .......................
    FirstName |peopleID|embolizationDate
    Alina     |16,459  |2017-27-03
    Alina     | 16,459 |2017-24-03
    Alina D.  | 14,499 |2017-27-09
    ======================================

你可以看到alina有多个记录,因为她在两个日期做了栓塞。如果有人做了超过 1 次栓塞,我希望它在单个记录中,所以我想要这样的东西

   ............Result .......................
    FirstName |peopleID|embolizationDate|2ndembolization
    Alina     |16,459  |2017-27-03       |2017-24-03
    Alina D.  | 14,499 |2017-27-09
    ======================================

如果有人做了不止一次栓塞,如果有人只做了一次栓塞而不是记录以正确的方式显示,是否有可能在单个记录中得到答案。 谢谢

【问题讨论】:

    标签: mysql database join


    【解决方案1】:

    我不明白你为什么使用UNION。这似乎是一个简单的聚合。

    将值放在单独的列中很棘手。将它们放在分隔字符串中更容易。也许这可以满足您的要求:

    SELECT p.FirstName, p.ID, GROUP_CONCAT(d.embolizationDate) as dates
    FROM tblpeople p LEFT JOIN
         tblembolizations details
         ON p.ID = details.peopleID 
    WHERE pconcat(FirstName,' ',LastName) like '%alina%'
    GROUP BY p.FirstName, p.ID;
    

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      相关资源
      最近更新 更多