2017-09-28 4 views
2

를 반복하지 특정 컬럼과 행을 추출의 MySQL의 난이 방법으로 구성 테이블이 있다고 가정 해 봅시다

a E f 
c r h 

을 나는 때문에 특히 Column2 값이 반복되는 행을 가져오고 싶지는 않습니다. 반복되는 행을 신경 쓰지 않으므로 첫 번째 행은에 적합합니다.

나는이 쿼리를 수행하는 일 것이라고 생각하지만 그렇지 않다 :

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' 

입니다 검색어 : select * mydb 이메일로 그룹

,451,515,

결과 : 같은

이전과
+1

? 다음은 [** DEMO **] (http://rextester.com/PWXN38651)이며 –

+0

@JuanCarlosOropeza uhm ...이 이상합니다. 거기에 내 DB에서 작동하지 않기 때문에 그 동작을 허용하지 않는 내 테이블의 구조에 특정해야합니다 – frabis

+0

크리 데이터 집합의 행이 아닌가 ????? – Strawberry

답변

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

--EDIT--

GROUP BY을 잊고 있었던 할 수 있음!

--- 편집 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

별 의미는 같지만 같은 'E'를 공유하기 때문에 그다지 효과가 없다. AEF와 BEG를 얻는다. –

+0

아니, 그렇지 않았다. – frabis

+0

Ughhh, 'GROUP BY'을 잊어 버렸습니다. Getting old –

0

이 시도 :

이 그룹에 최소한의 ID를 사용하여 값을 별개의 이메일 일치하는 데이터 만 가져옵니다. 최대 ID를 원하면 min을 max로 변경할 수 있습니다.

참고 : ID를해야 고유의

쿼리 :

당신이 나던 일을 무엇을 의미하는지
select * from mydb where id IN(select min(id) from mydb group by email) 
관련 문제