mysql排序问题

时间:2010-08-31 07:51:14

标签: sql mysql

我有一个数据库,我想根据每个字段中包含的字数对一列进行排序。

前:

a b (has 2 words)
a b c d e (has 5 words)
a b c (has 3 words)

我希望'a b c d e'成为排序结果中的第一个,'b b'是第二个。 ..等等

你有解决方案吗?

编辑:谢谢你们的回答! 所有答案都很好但同时我使用mysql-substr-count

中找到的相同解决方案解决了

4 个答案:

答案 0 :(得分:1)

这应该可以解决问题,但也许有更好(更快)的解决方案:

SELECT *
FROM table
ORDER BY LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))

答案 1 :(得分:1)

哼 - here是关于如何计算一列中的单词的示例。也许它可以像这样扩展

SELECT 
    SUM( LENGTH(`name`) - LENGTH(REPLACE(`name`, ' ', ''))+1) AS `num_words`
FROM `table`
ORDER BY `num_words`

(未经测试 - 抱歉。)

答案 2 :(得分:0)

您可以按空格数排序:

order by length(field) - length(replace(field, ' ', '')) desc

答案 3 :(得分:0)

您的数据库结构很可能出错。如果你问这样的问题。
这样的数字应该取自数据库结构,而不是字段内容 由于这种糟糕设计的直接结果是上述答案中所有查询的糟糕表现。