2017-03-27 11 views
0

は私が最適なクエリ何ができるか、私が選択したいこののMysql、私はこの重複を防ぐことができますどのように

ID |  Code  | Name 
1 | f965a4eb IN | Bob 
2 | f965a4eb OUT | Bob 
3 | f965a4ed IN | James 
4 | f965a4ed OUT | James 

のようなテーブルのユーザーこの

ID |  Code  | Name 
1 | f965a4eb IN | Bob 
3 | f965a4ed IN | James 

のように同じコードの重複を持たずに持っていますこのため?

+1

あなたはレコードが選択する重複の間で選択するにはどうすればよいですか? –

+0

期待される結果は何ですか? ID 1または3? – Jens

+0

これを実行してください: 'Select * from YourTable where '%IN%'のようなコード –

答えて

1

あなたのデータでの挑戦は、グループに使用したいCodeです。末尾にINまたはOUTを含む文字列の中に埋め込まれています。 1つのアプローチでは、実際のコードを分離し、このグループを使用して、必要な結果を得ます。しかし、別の列に分離したコードを保持すると、おそらくもっと簡単になります。

SELECT t1.* 
FROM yourTable t1 
INNER JOIN 
(
    SELECT SUBSTRING_INDEX(Code, ' ', 1) AS Code, Name, MIN(ID) AS min_ID 
    FROM yourTable 
    GROUP BY SUBSTRING_INDEX(Code, ' ', 1), Name 
) t2 
    ON t1.Name = t2.Name AND 
     SUBSTRING_INDEX(t1.Code, ' ', 1) = t2.Code AND 
     t1.ID = t2.min_ID 

出力:ここ

enter image description here

デモ:

Rextester

関連する問題