MySQL: id в обратном порядке, сохраняя порядок значений других столбцов
Изучая вопросы на Toster-ре, наткнулся на один интересный вопрос, а именно: Как вывести id в обратном порядке, сохраняя при этом порядок значений..
Имеем:
1 2 3 4 5 6 7 8 |
id colors -- -------- 1 зеленый 2 красный 3 синий 4 белый |
Нужно написать запрос, чтобы получить такой вывод
1 2 3 4 5 6 7 8 |
id colors -- -------- 4 зеленый 3 красный 2 синий 1 белый |
На первый взгляд довольно тривиальная задача, однако не все так просто. Предлагаю Вам не смотреть сразу мое решение, а попробовать решить задачу самостоятельно.
Я уверен, что Вам лень писать запросы для создания схемы базы, поэтому предоставлю Вам сразу схему создания базы и тестовые данные.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE TABLE tmp ( id INT, color VARCHAR(255) ); INSERT INTO tmp (id, color) VALUES (1, 'зеленый'), (2, 'красный'), (3, 'синий'), (4, 'белый') ; |
Теперь Вы можете открыть sqlfiddle.com и сразу попробовать написать запрос.
Те кто не сталкивался с sqlfiddle.com ранее, рассказываю как работать: вставляете код выше в поле Schema Panel (слева) и нажимаете кнопку [Build Schema]. Затем в правой части можете писать запрос, опираясь на указанную схему. Например в нашем случае, можно начать с запроса: SELECT * FROM tmp
Так же чтобы исключить обсуждения того, что такие запросы нельзя писать, дополню вопрос тем, что id в данном примере не Primary Key, не имеет UNIQUE индекса и может содержать другие последовательности, например не 1-2-3-4, а 2-5-8-0. Суть вопроса в том, чтобы одним запросом вывести эти значения в обратном порядке, при этом сохраняя последовательность значений во второй колонке.
Если Вы решили задачу не посмотрев мое решение, напишите ваше решение в комментарии. То, как решил его я Вы можете увидеть на второй странице этого поста.
Author: | Tags: /
| Rating:
Leave a Reply