Как мы можем заказать список, используя IN (), используя MySQL - PullRequest
0 голосов
/ 28 ноября 2011

Я хотел бы знать, как мы можем упорядочить список, используя order by в MySQL. ниже приведено утверждение

SELECT info.* From p_all,resinfo 
WHERE (p_all.id = info.id ) AND 
    p_all.id IN (21,10,42,84,234,15,251) AND 
    p_all.table_type = 'price' AND p_all.room_type='d' AND 
    p_all.year = '2012'
order by p_all.room_type='d'

Пожалуйста, предоставьте мне некоторую информацию, как мы можем заказать тип номера (цена) в соответствии с наивысшим или наименьшим.

информация = сохраненный идентификатор и информация об отеле.
p_all = таблица месяцев с тем же идентификатором (информация), содержащая информацию о цене (тип таблицы), номера (тип комнаты), год (2012)

Ответы [ 4 ]

1 голос
/ 28 ноября 2011

Как уже упоминалось другими, вы не можете заказать путем сравнения (p_all.room_type='d').Вам нужно заказать по фактическим значениям.Если вы хотите, чтобы (p_all.room_type='d') был первым, попробуйте следующее:

ORDER BY
  (CASE WHEN p_all.room_type='d' THEN 0 ELSE 1 END) ASC
1 голос
/ 28 ноября 2011

Упорядочить просто, вы просто перечисляете поля, по которым хотите упорядочить, после ключевых слов ORDER BY.Вы не даете понять, какой столбец на самом деле содержит цену (вы говорите room_type и table_type в разных местах вашего вопроса), но предполагая, что цена находится в таблице_типа, которую вы используете:

 ORDER BY p_all.table_type DESC

(DESC, что означает «убывать», означает, что сортировка будет от самой высокой к самой низкой).

Вам также придется иметь дело с тем фактом, что вы ссылаетесь на info кактаблица в ваших результатах, но в SELECT нет такой таблицы (вероятно, вы имели в виду resinfo?).

Было бы полезно, если бы вы показали исходные структуры таблиц и, возможно, несколько записей из каждой.

1 голос
/ 28 ноября 2011

Ваше предложение ORDER BY должно содержать то, что вы хотите заказать.

SELECT info.* 
FROM   p_all, 
       resinfo 
WHERE  ( p_all.id = info.id ) 
       AND p_all.id IN ( 21, 10, 42, 84, 
                         234, 15, 251 ) 
       AND p_all.table_type = 'price' 
       AND p_all.room_type = 'd' 
       AND p_all.YEAR = '2012' 
ORDER  BY p_all.price DESC 
0 голосов
/ 28 ноября 2011

From p_all,resinfo - это не правильно.Используйте join для присоединения к другой таблице.http://dev.mysql.com/doc/refman/5.0/en/join.html

Также не разрешается делать какие-либо назначения в предложении ORDER BY.Для сортировки в обратном направлении используйте ASC http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

...