我需要从数据库中提取记录并按字母顺序打印出来以便显示
'#'记录
'A'记录
希望有意义,我可以通过PHP做到这一点,但这会相当复杂,需要大量的代码,有没有办法通过数据库和几行PHP来做到这一点?
这需要拿起条目的第一个字母,如果是字母表,它会把它放在正确的字母下,如果不是,它会把它放在'#'下
答案 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
(注意:头顶代码未经测试)