我编写了以下代码,以显示html表中的wordpress数据库表中的数据:

global $wpdb;
$table_name = $wpdb->prefix . 'mytable';
$stats = $wpdb->get_results("SELECT * FROM $table_name ORDER BY cast(alexacr as UNSIGNED) ASC");
$itemnum = $wpdb->get_var("SELECT COUNT(id) FROM $table_name");
echo '<span style="font-family: sans-serif;position:relative;float: left;font-size: 18px;"><em>'.$itemnum.' Sites</em></span>';
echo '<table>';
echo '<thead>';
echo '<th>Nome &amp; Link</th><th>Alexa CR</th>';
echo '</thead>';
echo '<tbody>';
foreach ($stats as $stat){
echo'<tr>';
echo '<td><a title="'.str_replace('_','',$stat->name).'" href="'.$stat->url.'" target="_blank">'.str_replace('_','',$stat->name).'</a></td><td>'.$stat->alexacr.'</td>';
echo'</tr>';
 }
echo '</tbody>';
echo '</table>';


alexacr列设置为varchar。
alexacr列的结果如下所示:

N/A
1
2
3
4


我怎样才能仅对数字进行排序?

1
2
3
4
N/A


谢谢。

最佳答案

尝试

  SELECT
        *
  FROM
        Table1
  Order By
        CASE WHEN alexacr like 'N/A' then 1 else 0 end ASC,
        LPAD(alexacr, 20, '0') ASC


http://sqlfiddle.com/#!2/210007/1上的演示

有关LPAD的更多详细信息,请参见http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lpad

关于php - 首先在mysql中对varchar整数进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20527600/

10-13 08:56