我有一个死者的数据库;其中一列包含他们的死亡年龄。 由于db“按原样”在历史文档中记录信息,因此该列包含除数字之外的其他内容。年龄可以输入为“inf。”,“6 mos。”,“2 wks”。等,或者是空的。大约90%的列是普通的旧数字,如“87”或“2”。
我正在试图回应一个按年龄排序的最老的人的表格。 由于年龄的所有非数字值,我的查询是:
<?php
...
$sql = "SELECT pid,first_name,surname,date,age
FROM $table
WHERE age REGEXP '^[0-9]+$'
ORDER BY age DESC
LIMIT 10";
...
?>
90岁以后的结果总是9岁时死亡的孩子。该栏目按字母顺序排序。
如何按降序排序?
答案 0 :(得分:2)
SELECT pid,first_name,surname,date,CAST(age as SIGNED) AS int_age
FROM table1
WHERE age REGEXP '^[0-9]+$'
ORDER BY int_age DESC
LIMIT 10;