|
Тема
|
ORDER BY
|
|
Автор |
mr.vain (пътник 57) |
Публикувано | 16.01.06 18:28 |
|
Здравейте.
Въпросът може да е малко странен, но ми е нужно решение, а не можах да се сетя. Как мога да сортирам извлечените редове по определен ред, различен от ORDER BY column_name? Идеята е, че имам следната заявка
SELECT.... WHERE id IN (3,7,2,9,10,4)
Нужен ми е "ORDER BY id" по реда на задаването на id-то във WHERE клаузата, който в общия случай се генерира динамично.
Базата е MySQL 4.1. Благодаря ви предварително!Редактирано от mr.vain на 16.01.06 18:35.
| |
Тема
|
Re: ORDER BY
[re: mr.vain]
|
|
Автор |
salle (един такъв) |
Публикувано | 16.01.06 19:39 |
|
Да можеш
... ORDER BY <израз>
Само трябва да си измислиш израз който да върши работа
С груба сила например:
... ORDER BY CASE id WHEN 3 THEN 1 WHEN 7 THEN 2 WHEN 9 THEN 3 ...
Аз бих го направил с допълнителна временна табличка и JOIN
CREATE TEMPORARTY TABLE sort (sort TINYINT, id INT) ENGINE=HEAP;
INSERT INTO sort VALUES (1,3), (2,7), (3. 9) ...
Редактирано от salle на 16.01.06 19:49.
| |
Тема
|
Re: ORDER BY
[re: salle]
|
|
Автор |
mr.vain (пътник 57) |
Публикувано | 16.01.06 19:52 |
|
Мерси за бързия отговор, аз току що също намерих решение, което ми върши работа:
SELECT...
FIND_IN_SET(id,'3,7,2,9,10,4') AS sortBy
WHERE id IN (3,7,2,9,10,4)
ORDER BY sortBy
Не зная до колко е универсално и правилно, но работи чудесно.
Има три вида хора. Част от проблема, част от решението и част от пейзажа.
| |
Тема
|
Re: ORDER BY
[re: mr.vain]
|
|
Автор |
salle (един такъв) |
Публикувано | 16.01.06 20:56 |
|
Естествено, че има много варианти.
Твоето FIND_IN_SET() също може да отиде в ORDER BY клаузата за да не ти се връща в резултата:
SELECT...
WHERE id IN (3,7,2,9,10,4)
ORDER BY FIND_IN_SET(id,'3,7,2,9,10,4');
| |
Тема
|
Re: ORDER BY
[re: salle]
|
|
Автор |
mr.vain (пътник 57) |
Публикувано | 16.01.06 21:53 |
|
Идеално.
Не бях използвал тази функция досега, но ми свърши чудесна работа.
Благодаря ти за помощта!
Има три вида хора. Част от проблема, част от решението и част от пейзажа.
| |
Тема
|
Re: Ами то и аз ...
[re: mr.vain]
|
|
Автор |
salle (един такъв) |
Публикувано | 17.01.06 01:19 |
|
Тази функция FIND_IN_SET() я знам само дотолкова доколкото съм я чел в документацията и съм я обяснявал като се наложи.
| |
|
|
|
|