2015-02-02 1 views
3

У меня есть список доменов и субдоменов в БД 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 

Как я могу это достичь? Пожалуйста, помогите мне.

+0

Это связано много манипуляций со строками. Можно ли выбрать результаты, а затем отсортировать их в C#? Было бы намного проще там – Rhumborl

+0

Нет, я хочу, чтобы это было сделано только в mysql – manu

+0

@manu, если вы хотите, чтобы это было сделано только в MySql, тогда удалите тег C# – Bayeni

ответ

0

Вам необходимо выполнить заказ от «end to start» и «от начала до конца» с помощью substring_index с разделителем «.». и рассчитывать occurenses = 2 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index такие следующим образом:

SELECT * FROM `table` order by SUBSTRING_INDEX(`fieldname`, '.', -2),SUBSTRING_INDEX(`fieldname`, '.', 2); 

SQL скрипку: http://sqlfiddle.com/#!2/ac8c61/1

0

substring_index (имя домена, '.', - 2) говорит поиск с конца вперед, найдите вторую точку и возьмите все после нее. Это возвращает домен, т. Е. abc.com.

выберите имя домена, substring_index (имя домена, '.', - 2) в качестве имени домена, такого как «%.%.%», Как имя домена, например «%.%.%.%» As c из db.domains порядок по a, b, c asc, domainname asc;

+0

найти домен, найти количество доменных имен с двумя точками, затем три точки, упорядочить по доменам, затем две точки, три точки, а затем первую букву. Я многому научился. Отличный вопрос. –

Смежные вопросы