ORDER BY
5 отговора
292 прегледа
ORDER BY
Здравейте.
Въпросът може да е малко странен, но ми е нужно решение, а не можах да се сетя. Как мога да сортирам извлечените редове по определен ред, различен от ORDER BY column_name? Идеята е, че имам следната заявка
SELECT.... WHERE id IN (3,7,2,9,10,4)
Нужен ми е "ORDER BY id" по реда на задаването на id-то във WHERE клаузата, който в общия случай се генерира динамично.
Базата е MySQL 4.1. Благодаря ви предварително!
Въпросът може да е малко странен, но ми е нужно решение, а не можах да се сетя. Как мога да сортирам извлечените редове по определен ред, различен от ORDER BY column_name? Идеята е, че имам следната заявка
SELECT.... WHERE id IN (3,7,2,9,10,4)
Нужен ми е "ORDER BY id" по реда на задаването на id-то във WHERE клаузата, който в общия случай се генерира динамично.
Базата е MySQL 4.1. Благодаря ви предварително!
Редактирано от mr.vain на
Re: ORDER BY
Да можеш
... 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.online.bg/sig
... 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.online.bg/sig
Редактирано от salle на
Re: ORDER BY
Мерси за бързия отговор, аз току що също намерих решение, което ми върши работа:
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
Не зная до колко е универсално и правилно, но работи чудесно.
Има три вида хора. Част от проблема, част от решението и част от пейзажа.
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
Естествено, че има много варианти.
Твоето 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');
salle.online.bg/sig
Твоето 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');
salle.online.bg/sig
Re: ORDER BY
Идеално.
Не бях използвал тази функция досега, но ми свърши чудесна работа.
Благодаря ти за помощта!
Има три вида хора. Част от проблема, част от решението и част от пейзажа.
Не бях използвал тази функция досега, но ми свърши чудесна работа.
Благодаря ти за помощта!
Има три вида хора. Част от проблема, част от решението и част от пейзажа.
Re: Ами то и аз ...
Тази функция FIND_IN_SET() я знам само дотолкова доколкото съм я чел в документацията и съм я обяснявал като се наложи.
salle.online.bg/sig
salle.online.bg/sig