微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – SQL将ORDER BY结果作为数组返回

是否可以将组作为关联数组返回?我想知道是否可以使用纯sql解决方案.请注意,我发布我可能会使事情变得更加复杂,但这主要是为了让我了解sql的强大功能.

我的问题:我在数据库中有一个单词列表,应该按字母顺序排序,并根据单词的第一个字母分组到不同的组中.

例如:

ape
broom
coconut
banana
apple

应该归还为

array(
'a' => 'ape', 'apple',
'b' => 'banana', 'broom',
'c' => 'coconut'
)

所以我可以通过第一个字母轻松创建排序列表(即点击“A”只显示以a开头的单词,“B”表示带b,等等.这样可以让我更容易在一个查询中加载所有内容生成排序列表JavaScript基于,即无需重新加载页面(或使用AJAX).

附注:我正在使用Postgresql,但MysqL解决方案也不错,所以我可以尝试将其移植到Postgresql.脚本语言是PHP.

解决方法:

MysqL的:

SELECT LEFT(word, 1) AS first_letter, 
  GROUP_CONCAT(word) AS word_list
FROM MyTable
GROUP BY LEFT(word, 1);

Postgresql 8.4:

SELECT SUBSTRING(word FOR 1) AS first_letter, 
  ARRAY_TO_STRING(ARRAY_AGG(word), ',') AS word_list
FROM MyTable
GROUP BY SUBSTRING(word FOR 1);

有关在Postgresql中模拟MysqL的GROUP_CONCAT()的更多信息,请参阅http://mssql-to-postgresql.blogspot.com/2007/12/cool-groupconcat.html.

有关ARRAY_AGG()的更多信息,请参阅http://www.postgresonline.com/journal/index.php?/archives/126-PostgreSQL-8.4-Faster-array-building-with-array_agg.html.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐