在这里遇到一些问题。我们有一个系统可以跟踪我们的网站托管,并且我已经在这个已经存在的系统上开发了一个前端门户。
在数据库中,表格如下所示:
id | company_id | renewal | domain_name
以及MySQL数据库中的几个条目示例:
1 | 5 | June 2014 | www.example.com
2 | 5 | June 2015 | www.example.com
3 | 5 | June 2016 | www.example.com
4 | 5 | June 2017 | www.example.com
5 | 5 | June 2018 | www.example.com
6 | 5 | June 2014 | www.stackoverflow.com
7 | 5 | June 2015 | www.stackoverflow.com
8 | 5 | June 2016 | www.stackoverflow.com
9 | 5 | June 2017 | www.stackoverflow.com
10 | 5 | June 2018 | www.stackoverflow.com
我希望SELECT *
company_id = 5
- 这没有问题。然后,我想要显示renewal
最高的所有域 - 基本上我想要返回:
5 | 5 | June 2018 | www.example.com
10 | 5 | June 2018 | www.stackoverflow.com
获取独特的域名很简单,我已经通过GROUP BY(domain_name)
实现了这一点,但我对renewal
的排序一无所知,特别是因为它不是简单的int
,而是一个组合。
答案 0 :(得分:2)
我肯定会建议将此表转换为具有实际日期的内容,以便您对其进行排序。目前,您可以使用MySQL的STR_TO_DATE
函数,它会尝试根据给定的格式解析日期。
这将是:
SELECT domain_name, MAX(STR_TO_DATE(renewal_date, '%M %Y')) AS max_renewal_date
FROM table
WHERE company_id = 5
GROUP BY domain_name