Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL中的IN()对列表进行排序_Mysql_Sql_Sql Order By - Fatal编程技术网

如何使用MySQL中的IN()对列表进行排序

如何使用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

我想知道,我们如何在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'
请给我提供一些信息,我们如何按从高到低的顺序订购房间类型(价格)

信息=存储的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代码行?只是为了迷惑人们,让他们更难给出答案?