MySQL中的域排序
我在MySQL数据库中有一个域和子域列表,如下所示:MySQL中的域排序,mysql,Mysql,我在MySQL数据库中有一个域和子域列表,如下所示: abc.com contactus.def.com pages.abc.com help.about.abc.com def.com abc.com pages.abc.com help.about.abc.com def.com contactus.def.com 我希望SELECT查询根据域名对这些域和子域进行排序,以便最终输出如下: abc.com contactus.def.com pages.abc.com help.ab
abc.com
contactus.def.com
pages.abc.com
help.about.abc.com
def.com
abc.com
pages.abc.com
help.about.abc.com
def.com
contactus.def.com
我希望SELECT查询根据域名对这些域和子域进行排序,以便最终输出如下:
abc.com
contactus.def.com
pages.abc.com
help.about.abc.com
def.com
abc.com
pages.abc.com
help.about.abc.com
def.com
contactus.def.com
我怎样才能做到这一点?请帮帮我。子字符串_indexdomainname,“,-2表示从结尾向前搜索,找到第二个点,并获取后面的所有内容。这将返回域ie.abc.com
从db.domains中按a、b、c asc、domainname asc顺序选择domainname、子字符串\u indexdomainname、'.'.',2作为a、domainname like%%.%.%.%.%作为b、domainname like%%.%.%作为c 您需要使用带分隔符的子字符串索引从端到端和从端到端执行排序。和计数发生次数=2,如下所示:
SELECT * FROM `table` order by SUBSTRING_INDEX(`fieldname`, '.', -2),SUBSTRING_INDEX(`fieldname`, '.', 2);
SQL FIDLE:这涉及到大量字符串操作。您是否可以选择结果,然后在c中对其进行排序?这样会容易得多不,我希望它在mysql中完成only@manu如果您只想在MySql中完成,那么删除标记C这是一个很难解决的问题,因为根域中有多少名称是不同的。例如sub.example.com和example.com vs sub.example.co.uk vs example.co.uk。因此,除了最后两个点组之外,你不能只做一些简单的事情,比如剥离所有点组;找到域名,用两个点,然后三个点,按域排序,然后是两个点,三个点,然后是第一个字母来计算域名的数量。我从中学到了很多。好问题。