首页 > 解决方案 > 使用 Reg ex 的 SQL GROUP BY 名称

问题描述

我正在从我的表中选择数据并按列的长度排序,但我现在想分组为 3 个不同的“类别”

SELECT * FROM prices WHERE name LIKE 'Inclusive Minutes%' AND status = '' ORDER BY LENGTH(name);

3个不同的就是这样,每个都有多个(它们只是有不同的数字)

Inclusive Minutes [100 Mobile]  
Inclusive Minutes [100 National]    
Inclusive Minutes [100 National + 500 Mobile]   

可以使用GROUP BY这样的吗?

标签: mysql

解决方案


您可以使用CASE语句来选择 3 种类型并按它们分组:

SELECT 
  CASE 
    WHEN name LIKE '%[%National%Mobile]' THEN 'National + Mobile'  
    WHEN name LIKE '%[%Mobile]' THEN 'Mobile'  
    WHEN name LIKE '%[%National]' THEN 'National'  
  END AS type,
  <aggregated columns here>
FROM prices 
WHERE name LIKE 'Inclusive Minutes%' AND status = '' 
GROUP BY type
ORDER BY LENGTH(type);

CASE语句之后,您可以放置​​所需的聚合列。


推荐阅读