简体   繁体   English

选择最大值和对应的列

[英]Selecting Max Value and Corresponding Columns

I am trying to grab the max date from the updates column but also return the corresponding fullname from that table, what is currently happening is that the latest updates.date is being returned but the first updates.consultant is currently being returned as well and we need the correct fullname for the MAX date. 我正在尝试从更新列中获取最大日期,而且还从该表中返回相应的全名,当前正在发生的事情是,返回的是最新的updates.date,但当前也返回了第一个updates.consultant,我们需要最大日期的正确全名。

SELECT customer.id, 
       customer.name, 
       customer.retainer_value, 
       customer.customer_type, 
       clientdetails.performance, 
       clientdetails.url, 
       members.fullname AS acc_manager, 
       u.maxdate, 
       u.fullname 
FROM   customer 
       LEFT JOIN clientdetails 
              ON clientdetails.id = customer.id 
       LEFT JOIN members 
              ON members.id = customer.consultant_name 
       LEFT JOIN (SELECT updates.clientid, 
                         members.fullname, 
                         Max(updates.`date`) AS MaxDate 
                  FROM   updates 
                         LEFT JOIN members 
                                ON members.id = updates.consultant 
                  GROUP  BY updates.clientid 
                  ORDER  BY updates.date DESC) u 
              ON customer.id = u.clientid 
WHERE  customer.switchedoff = 'N' 
       AND customer.companyid <> '3' 

I think the easiest way in your case is to use the substring_index() / group_concat() method: 我认为最简单的方法是使用substring_index() / group_concat()方法:

SELECT customer.id, 
       customer.name, 
       customer.retainer_value, 
       customer.customer_type, 
       clientdetails.performance, 
       clientdetails.url, 
       members.fullname AS acc_manager, 
       u.maxdate, 
       u.fullname 
FROM   customer 
       LEFT JOIN clientdetails 
              ON clientdetails.id = customer.id 
       LEFT JOIN members 
              ON members.id = customer.consultant_name 
       LEFT JOIN (SELECT updates.clientid, 
                         substring_index(group_concat(m.fullname order by u.date desc separator '|'), '|', 1) as full_name
                         Max(updates.`date`) AS MaxDate 
                  FROM   updates u
                         LEFT JOIN members m
                                ON m.id = u.consultant 
                  GROUP  BY u.clientid
                 ) u 
              ON customer.id = u.clientid 
WHERE  customer.switchedoff = 'N' 
       AND customer.companyid <> '3' ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM