2017-01-21 31 views
1

我目前正在使用不同条目(如日期,名称)的数据库,但也有一列使用时间“范围”。这基本上意味着在这个单元格中可以有一个确定的数字,如“10”,但也可以是“10-15”或“5-10”等数值。 所以我想在这里做的是按“平均”值((最低+最高)/ 2)对它们进行排序。所以在3提到的值的情况下,它应该是 5-10 10-15 我想知道是否有可能以某种方式嵌入到SQL语句中。 如果不可能,我想知道实现它的最简单方法。SQL如何按“范围”排序

现在我通过几个条件将$ SQL_statement放在一起,然后将所有内容放入$ resultset中,然后与“while”一起使用。下面是一些片段:

$resultset=mysql_query($SQL_statement); 
while ($currententry=mysql_fetch_array($resultset)) 
{ 
    echo $currententry['Platform']; 
    echo $currententry['PlaytimeInH']."h"; 
} 

回答

0

条款,以便你可以做到这一点与substring_index()和算术:

order by (substring_index(col, '-', 1) + 0 + 
      substring_index(col, '-', -1) + 0 
     )/2 

分工减2是不必要的,但你确实在你的问题中指定了平均值。

请注意,即使col中没有连字符,上述方法也能正常工作。

+0

非常感谢!奇迹般有效! – Kordanor

0

你可以使用一个选择用的情况下,当通过

select col1, col2, cole 
from your_table 
order by case 
     when your_column = '5-10' then 1 
     when your_column = '10-15' then 2 
     when your_column = '15-20' then 3 
     else 4 
     end 
+0

谢谢。但是这个数据库中有超过600个条目,有各种各样的变化。所以这样做会违反数据库的用途,因为我完全必须手动订购它。 – Kordanor