2017-09-28 8 views
2

を繰り返さない特定の列と行を抽出します。MySQLの - のは、私はこのように構成テーブルがあるとしましょう

Column1 Column2 Column3 
    a  E   f 
    b  E   g 
    c  r   h 
    d  E   i 

私はちょうど2つの行取得したいと思います:

a E f 
c r h 

を理由I列2の値が繰り返されている行をとりたいと思います。特に、は、繰り返す行のどちらにも気をつけないので、最初はになります。

私はこのクエリを実行することは働くだろうと思ったが、そうではありません。

select * from db group by Column2 having column2 != '' 

私は正確に取得beacauseここで同じ行


Tabe: mydb 
Columns: 
id int(11) AI PK 
client varchar(45) 
birth datetime 
email varchar(45) 
phone varchar(45) 


id client  birth    email   phone 
'1', 'test', '2017-08-12 00:00:00', '[email protected]', '57576765767' 
'2', 'test', '2017-08-12 00:00:00', '[email protected]', '45646456546' 
'3', 'test', '2017-08-12 00:00:00', '[email protected]', '35435353553' 
'4', 'test', '2017-08-12 00:00:00', '[email protected]', '12313212313' 
'5', 'test', '2017-08-12 00:00:00', '[email protected]', '23424234234' 

本当の例です。クエリ: *電子メールで* mydbグループを選択

結果:

+1

あなたはdoesntの仕事を何を意味しますか?ここには[** DEMO **](http://rextester.com/PWXN38651)があり、 –

+0

@JuanCarlosOropeza uhm ...それは変です。私のデータベースでは動作しないので、その動作を許可していない私のテーブルの構造にいくつかの特定のものがなければならない – frabis

+0

criはデータセットの行ではない????? – Strawberry

答えて

0
SELECT DISTINCT Column2, Column1, Column3 
FROM db 
GROUP BY Column2 

前と同じでは

--EDIT--

GROUP BYを忘れていた、それを行う可能性があります!

--- EDIT 2 ---

create table mydb (id int(11) Primary key AUTO_increment, 
    client varchar(45), 
    birth datetime, 
    email varchar(45), 
    phone varchar(45)); 

INSERT INTO mydb VALUES 
    ('1', 'test', '2017-08-12 00:00:00', '[email protected]', '57576765767'), 
    ('2', 'test', '2017-08-12 00:00:00', '[email protected]', '45646456546'), 
    ('3', 'test', '2017-08-12 00:00:00', '[email protected]', '35435353553'), 
    ('4', 'test', '2017-08-12 00:00:00', '[email protected]', '12313212313'), 
    ('5', 'test', '2017-08-12 00:00:00', '[email protected]', '23424234234'); 

SELECT DISTINCT email, client, birth, phone 
FROM mydb 
GROUP BY email; 

# email, client, birth, phone 
[email protected], test, 2017-08-12 00:00:00, 57576765767 
[email protected], test, 2017-08-12 00:00:00, 12313212313 
[email protected], test, 2017-08-12 00:00:00, 23424234234 
+0

それはうまくいきません、AEFとBEGは区別されるが同じEを共有するので –

+0

いいえ、それはありませんでした – frabis

+0

うーん、 'GROUP BY'を忘れてしまった。古いことを取得する –

0

これを試してください。

これは、グループ内の最小のIDを持つ値と異なる電子メールに一致するデータのみを取得します。あなたは最大のidをしたい場合はminをmaxに変更することができます。

注:idがなければならないユニーク

クエリ

select * from mydb where id IN(select min(id) from mydb group by email) 
関連する問題