3

次のようなプレーヤーハンドルのあるテーブルがあります。

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

そこから、最初のn-charが一致するすべてのプレーヤーを選択したいのですが、パターンはわかりません。最初のn-charであるだけです。上記の例では、行1、2、3、4、および7を返す必要はありません。

これは可能であり、MySQLで行うにはそれほど高価ではありませんか?

4

2 に答える 2

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)
);
于 2008-12-05T14:50:04.170 に答える
3

存在句を追加できます。

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]James3-
または| ブライアン
4-どちらでもない| ジョン
7-[N]ジョー

名前に「orderby」を追加すると、残りの作業をコードで実行できます。

于 2008-12-05T14:27:59.453 に答える