打印出数据库结果按字母顺序排列

时间:2011-08-10 17:22:45

标签: php mysql

我需要从数据库中提取记录并按字母顺序打印出来以便显示

'#'记录

  • %@ $ Records
  • %$%^£@ Records

'A'记录

  • 记录
  • 记录

希望有意义,我可以通过PHP做到这一点,但这会相当复杂,需要大量的代码,有没有办法通过数据库和几行PHP来做到这一点?

这需要拿起条目的第一个字母,如果是字母表,它会把它放在正确的字母下,如果不是,它会把它放在'#'下

2 个答案:

答案 0 :(得分:1)

SELECT * FROM YourTable ORDER BY YourField DESC

这将获取给定字段中的项目并以“降序”方式(即按字母顺序)排序。

对于分组,请考虑创建PHP数组。样本会是这样的:

$arr = array();
foreach($query_results as $key => $val) {
  $letter = substr($val, 1); // First letter
  $arr[$letter][] = $val;
}

从那里你可以使用PHP数组。如果排序出现问题,PHP确实有排序数组函数(单行函数),可以解决这些问题。

答案 1 :(得分:0)

要通过(并检索)第一个字母和全名来排序,在纯MySQL中将非字母字符折叠为“#”:

SELECT
  CASE
    WHEN name NOT RLIKE '^[A-Z]' THEN '#'
    ELSE SUBSTRING(name FROM 1 FOR 1)
  END AS first_letter, 
  name 
FROM table_name 
ORDER BY first_letter, name DESC

(注意:头顶代码未经测试)