MySQL сортировка по 2 параметрам - PullRequest
2 голосов
/ 21 сентября 2010

У меня есть таблица MySQL с 2 полями:

pd_code и pd_sort (значение по умолчанию pd_sort = 0). Для каждого продукта можно указать индекс заказа (в pd_sort) -1000, -900 и т. Д.

Поэтому, когда я распечатываю продукты на PHP, я бы хотел отсортировать их следующим образом.

product1 (pd_sort = -100), product2 (pd_sort = -90) и т. Д., А затем остальные продукты (где pd_sort = 0) отсортированы по pd_code.

ORDER BY pd_sort, pd_code работает только для 2 продуктов.

Есть предложения?

Chris

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Если я правильно понимаю, вы должны попробовать что-то вроде этого:

SELECT * FROM table
WHERE pd_sort <> 0
ORDER BY pd_sort

UNION

SELECT * FROM table
WHERE pd_sort = 0
ORDER BY pd_code
0 голосов
/ 21 сентября 2010

Объединение, как предложил jab , должно быть достаточно эффективным, даже если оно приводит к двум запросам, а не к одному.

Если вы не хотите выполнять объединение по какой-либо причинедругой подход заключается в том, чтобы select генерировал столбец, манипулируя значениями pd_code и pd_sort, и сортировал по этому столбцу.Вы не предоставили нам образцы данных для работы (ну, кроме пары pd_sort значений), но в большинстве случаев можно манипулировать данными так, что вы получите сортируемое значение, обычно просто выполняя concatsили числовые выражения.Но в самых сложных случаях вы можете прибегнуть к case операторам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...