MySQL:按列值前缀对行进行分组

时间:2017-02-03 13:48:56

标签: mysql

我有一张包含这样记录的表

(title)
ABC 001
ABC 002
DEF 001
DEF 002
... ...

我希望每个以相同的字符串开头只有一个。例如,在这种情况下,我希望有2条记录,ABC 001DEF 001

是否可以单独使用MySQL,或者在获得所有记录后我必须在应用程序中执行此操作?

谢谢

3 个答案:

答案 0 :(得分:2)

你可以使用mysql只使用on substr

上的一个组
 select min(title )
 from my_table
 group by substr(title, 1,3)

或可变空间位置

  select min(title )
 from my_table
 group by substr(title, 1,locate(' ' , title))

答案 1 :(得分:1)

您可以使用字符串函数(例如MID())拆分标题并创建2列。在此之后,您GROUP BY将结果列为一列。

SELECT MID(title, 0, 3) AS B, MID(title, 3, 3) AS B FROM table GROUP BY B

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_mid

https://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html

答案 2 :(得分:1)

如果你想在空格字符上拆分字符串,然后按第一个字符串分组并选择第二个字符串的最小值,你可以这样做:

select substr1, min(substr2)
from
(
  select substring_index(title, ' ', 1) AS substr1,
    substring_index(title, ' ', -1) AS substr2
  from your_table
) sub_query 
group by substr1