如何使用MySQL中的IN()对列表进行排序
我想知道,我们如何在MySQL中使用order by对列表进行排序。 以下是声明如何使用MySQL中的IN()对列表进行排序,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我想知道,我们如何在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_a
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'
请给我提供一些信息,我们如何按从高到低的顺序订购房间类型(价格)
信息=存储的id和酒店信息。p_all=具有相同id(信息)的月份表,该表包含价格(表类型)、房间(房间类型)、年份(2012)等信息。您的
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
正如其他人提到的,您不能通过比较订购(
p\u all.room\u type='d'
)。您需要按实际值排序。如果您希望(p\u all.room\u type='d'
)排在第一位,您可以尝试以下方法
ORDER BY
(CASE WHEN p_all.room_type='d' THEN 0 ELSE 1 END) ASC
排序很简单,只需在关键字order by之后列出要排序的字段。您不清楚哪一列实际包含价格(您在问题的不同位置说
房间类型
和表格类型
),但假设价格是表格类型,您会使用:
ORDER BY p_all.table_type DESC
(DESC代表“降序”,表示排序从最高到最低)
您还必须处理这样一个事实,即您在结果中引用了info
作为一个表,但SELECT中没有这样的表(您可能是指resinfo
?)
如果您显示原始表结构以及每个表中的一些记录,这将非常有用。
来自p_all,resinfo
-这不正确。使用join
连接另一个表
此外,不允许在
ORDER BY
子句中进行任何赋值。对于反向排序,请使用ASC
如果您有SQL问题,为什么要放置PHP代码行?只是为了迷惑人们,让他们更难给出答案?