2013-03-19 10 views
0

У меня есть таблица:заказа 2 колонки на том же порядке

Пример:

Name  |  Last Name 
Albert   Rigs 
Carl    Dimonds 
Robert   Big 
Julian   Berg 

мне нужно заказать так:

Name  |  Last Name 
Albert   Rigs   (name) 
Julian   Berg   (last name) 
Robert   Big   (last name) 
Carl    Dimonds  

мне нужно что-то подобное, заказ по имени и фамилию в том же порядке. См., Например, у меня есть имя Альберт, следующее упорядоченное имя строки его Карл, но у меня есть Big и Berg по фамилии, B> C, поэтому я получаю заказ последнего имени во второй строке. Это похоже на то, что две колонки одинаковы, но нет. Трудно объяснить, извините.

Возможно ли это?

Thaks заранее.

+1

Не совсем уверен, что я понимаю вашу логику заказа. Можете ли вы уточнить? – sgeddes

+0

уверен, я отредактировал. – Guerra

+2

Почему Большой подошел к Бергу? Я думаю, что @Andomar имеет правильный подход (если я правильно понимаю). – sgeddes

ответ

4

Чтобы заказать по минимуму (Name, Lastname), вы можете:

select * 
from YourTable 
order by 
     case 
     when Name > LastName then LastName 
     else name 
     end 
+2

+1 - Хорошая работа по пониманию требований OP! – sgeddes

+0

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

+1

Я не знаю, что такое OPs, но я надеюсь, что это хорошо. lol – Guerra

3

синтаксическое улучшение на случае, и позволяющий титан-брейк на другой колонке.

select * 
from  my_table 
order by least(name,last_name), 
      greatest(name,last_name) 
+0

+1 Это проще и лучше. Второй элемент «ORDER BY» разрушает связи, которые игнорирует другой ответ. –

+0

+1 для хорошей информации. ти – Guerra

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