我有一张包含这样记录的表
(title)
ABC 001
ABC 002
DEF 001
DEF 002
... ...
我希望每个以相同的字符串开头只有一个。例如,在这种情况下,我希望有2条记录,ABC 001
和DEF 001
。
是否可以单独使用MySQL,或者在获得所有记录后我必须在应用程序中执行此操作?
谢谢
答案 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