【问题标题】:Selecting Max Value and Corresponding Columns选择最大值和对应的列
【发布时间】:2014-09-26 20:02:56
【问题描述】:

我正在尝试从更新列中获取最大日期,但也从该表中返回相应的全名,当前发生的情况是返回最新的 updates.date 但第一个 updates.consultant 当前返回为好吧,我们需要正确的 MAX 日期全名。

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' 

【问题讨论】:

  • 您只是想将列名显示为最大日期??或其他的东西

标签: php mysql sql


【解决方案1】:

我认为在您的情况下最简单的方法是使用 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' ;

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 2014-12-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多