Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中的域排序_Mysql - Fatal编程技术网

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

我在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.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。因此,除了最后两个点组之外,你不能只做一些简单的事情,比如剥离所有点组;找到域名,用两个点,然后三个点,按域排序,然后是两个点,三个点,然后是第一个字母来计算域名的数量。我从中学到了很多。好问题。