MySQL: держать столбец вместе в результатах? - PullRequest
1 голос
/ 29 апреля 2009

ОК, когда я делаю запрос, я хочу, чтобы все элементы с одинаковым group_id были «вместе», например, 117,117,134,111 - это хорошо, но 117,134,117,111 - не хорошо, потому что group_id 117 не все «вместе». Я надеюсь, что в этом есть смысл. Единственный способ, которым я знаю, как этого добиться - это упорядочить результаты по group_id, но если я хочу упорядочить по одинаковой цене или что-то в этом роде, есть ли способ сделать это, сохранив все совпадающие group_id вместе?

Спасибо.

Ответы [ 4 ]

1 голос
/ 29 апреля 2009

Тогда вам придется упорядочить по нескольким столбцам, поэтому:

SELECT group_id, price, name
FROM groups
ORDER BY group_id, price;

Таким образом, все групповые идентификаторы объединены, и в этих «группах» групповых сортировок все отсортировано по цене. Или я неправильно понял ваш вопрос?

1 голос
/ 29 апреля 2009

Да, вы просто заказываете по обоим, поэтому ваш ORDER BY должен выглядеть так:

ORDER BY group_id, price

Это будет сначала порядок по group_id, а затем по цене. Таким образом, все одинаковые group_ids будут вместе, но всякий раз, когда есть несколько с одинаковым group_id, они будут упорядочены по цене.

Ваш вопрос немного двусмысленный, так что просто для объяснения на случай, если это то, что вы на самом деле хотели - нет простого способа "в основном" упорядочить по цене и просто сохранить одинаковые значения group_ids вместе, что на самом деле не имеет никакого смысла. Я имею в виду, если у вас были следующие данные:

group_id  price
117       2.00
117       5.00
111       4.00
134       1.00

Вы не можете легко выбрать его в следующем порядке:

group_id  price
134       1.00
117       2.00
117       5.00
111       4.00
0 голосов
/ 29 апреля 2009

Я бы сделал:

SELECT price, group_id
FROM groups
WHERE 1=1
ORDER BY group_id, price DESC

Для последовательного отображения групп, а затем цен в порядке убывания.

0 голосов
/ 29 апреля 2009

Почему бы вам не заказать по цене И group_id ???

SELECT price, group_id, ...
FROM products
WHERE 1=1
ORDER BY price DESC, group_id

Сначала будут показаны самые большие цены, а при равных ценах будет показан последовательный идентификатор_группы

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