【发布时间】:2012-04-29 15:44:05
【问题描述】:
通常我会先做好功课,但我现在快到最后期限了,我想我会把它扔出去寻求帮助,主要是因为我从以前的经验中知道,任何我认为复杂的事情实际上都是SQL 轻而易举。
我希望按字母范围对结果进行分组,而不仅仅是单个字母。所以,最终我希望我的输出类似于
ABCD:
-- Alpha
-- Bravo
-- Charlie
-- Delta
EFGH:
-- Echo
-- Foxtrot
-- Gulf
-- Hotel
到目前为止,我一直在使用ORDER BY LOWER(name) ASC,然后只是将记录复制到数组结构中以获取单个字母分组(A、B、C 等),但这需要扩展为按字母范围分组,我想知道有没有更快/更有效的方法。
纯 SQL 解决方案?还是用 PHP 进行后处理?
提示、技巧、完整答案一如既往地受到赞赏。
【问题讨论】:
-
你不能只
ORDER BY name并将结果“分组”到你的应用程序 (PHP) 代码中吗?我认为没有必要使用GROUP BY。 -
除非你只想要计数(
ABCD : 4、EFGH : 4、IJKL : 0、...、YZ : 0) -
是的,我不明白你是如何在 SQL 中“分组”它们的,因为你仍然必须按字母顺序列出它们。
-
我在任何地方都没有说过我正在使用 GROUP BY - @ypercube:我已经在使用 ORDER BY 名称来获取结果,然后使用 PHP 将记录捆绑在一起 -信组。我只是想知道 SQL 中是否有任何东西可以为我加快这个过程,而不是编写更多的 PHP 来将一个字母范围内的记录捆绑在一起。
-
我没有看到任何东西可以做这样的事情。老实说,我看不出“这样的事情”会是什么。您的行按您想要的顺序从 MySQL 返回。对于“捆绑”,我猜您的意思是将行拆分为组,并在每个组之前放置一个标题。这将是 PHP 中的一个简单检查(前一行与当前行)。
标签: mysql grouping alphabetical