按最小长度分组

时间:2014-03-06 19:46:50

标签: mysql sql group-by

我的SQL查询如下:

select CategoryID, Name, count(Name) as C 
from Posts 
where CategoryID=1101 and Language=1 
group by CategoryID 
order by C ASC;

我需要获取按名称分组的最短名称,任何想法?

如果没有给出CategoryID(NULL),那么另一件事情就会很好。该组不包括。

2 个答案:

答案 0 :(得分:1)

这样可以解决问题:

SELECT
  CategoryID,
  SUBSTRING_INDEX(GROUP_CONCAT(Name ORDER BY LENGTH(Name)), ',', 1) As s_name,
  Count(Name) as C,
FROM
  Posts 
WHERE
  CategoryID=1101 and Language=1 
GROUP BY CategoryID 
ORDER BY C ASC;

答案 1 :(得分:0)

您可以按length(Name)排序并限制为1来执行此操作。

select CategoryID, Name, count(Name) as C 
from Posts where CategoryID is not null and Language=1 
group by CategoryID order by length(Name) asc limit 1;

添加CategoryID IS NOT NULL以排除NULL值。

相关问题