我想知道,我们如何在MySQL中使用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.room_type='d'
请提供一些信息,我们如何根据最高到最低订购房型(价格)。
info =存储的身份证和酒店信息 p_all =具有相同id(info)的月份表,其中包含价格信息(table_type),房间(room_type),年份(2012)
答案 0 :(得分:1)
您的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
答案 1 :(得分:1)
正如其他人所说,您不能通过比较(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
答案 2 :(得分:1)
订购很简单,您只需在关键字ORDER BY之后列出要订购的字段。您没有说明哪个列实际上包含价格(您在问题的不同位置说room_type
和table_type
)但是假设价格在table_type中你会使用方法:
ORDER BY p_all.table_type DESC
(DESC,代表“降序”意味着排序将从最高到最低)。
你还必须处理这样一个事实:你在结果中引用info
作为一个表,但SELECT中没有包含这样的表(可能你的意思是resinfo
?)。< / p>
如果你展示了原始的表格结构,或者每个都有一些记录,那将会很有帮助。
答案 3 :(得分:0)
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