我有一个带有玩家手柄的桌子,像这样:
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中这样做是否可行而且不是太昂贵?
答案 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',您可以在代码中完成剩余的工作。