2009-06-12 12 views
0

同じテーブルの上にが...これは今ちょうど脳dumbing、簡単な質問に持っている

を同じ列の値を比較し、私は「FOO」と呼ばれる、一つのテーブルを持っています。 2つの列、 'id'と 'username'があります。

idは一意ですが、一部のユーザー名は同じユーザーを参照します。ただ1つはユーザー名の接頭辞 'xx_'を持っています。

ex: 
ID  USERNAME 
1  bob 
2  sam 
3  xx_bob 

どのユーザーが「xx_」という接頭辞を持つ相手を持っているかを確認するにはどうすればよいですか?それでは、どの人はしませんか?

答えて

2
select * from foo where username 
IN (select replace(username, 'xx_', '') from foo where username like 'xx_%') 

これは、IN動詞の後にサブクエリによって生成されるサブリストとテーブル全体を比較します。

反対に行うには、単にINの代わりにNOT INを使用します。

注:すべての行をしたい場合は

select * from foo a1 join foo a2 on (a2.username=concat('xx_',a1.username)); 
1

に類似していなければなりません重複していない重複ID:

SELECT foo.*, f2.id AS duplicate_id FORM foo 
LEFT OUTER JOIN foo AS f2 ON (f2.username = concat('xx_', foo.username)) 
WHERE foo.id NOT LIKE 'xx_%' 
0

:これは、T-SQL(MS SQL 2005)クエリで、これはあなたの両方の行のIDを与えるのMySQL

関連する問題