选择第一个n-chars相等的行(MySQL)

时间:2008-12-05 13:53:22

标签: mysql regex select

我有一个带有玩家手柄的桌子,像这样:

1 - [N] Laka
2 - [N] James
3 - nor | Brian
4 - nor | John
5 - Player 2
6 - Spectator
7 - [N] Joe 

从那里我想选择所有第一个n-chars匹配的玩家,但我不知道这个模式,只是它是第一个n-chars。在上面的例子中,我不想返回1,2,3,4和7行。

在MySQL中这样做是否可行而且不是太昂贵?

2 个答案:

答案 0 :(得分:6)

如果你知道n的值,你可以这样做(对于n = 3):

Select *
FROM players
WHERE Left(name, 3) in (
   SELECT Left(name, 3)
   FROM players
   GROUP BY Left(name, 3)
   HAVING (Count(*) > 1)
);

答案 1 :(得分:3)

您可以添加一个exists子句。

select name from players p1 where exists (
  select 1 from players p2 where 
    p2.name like CONCAT( SUBSTRING(p1.name, 1, 3), '%') 
    and p1.name <> p2.name )

这会给你:
1 - [N] Laka
2 - [N]詹姆斯
3 - 也不是布赖恩
4 - 也不是约翰
7 - [N] Joe

在名称上添加'order by',您可以在代码中完成剩余的工作。