2013-07-14 2 views
1

다음과 같은 쿼리가 있습니다.중복을 포함하는 MySQL SELECT DISTINCT

위의 글자 목록을 제공하고 내 데이터베이스를 쿼리합니다.

내가 원하는 것은 중복을 포함하여 행을 반환하는 것입니다 ('a', 'b'행, 'c', 두 개의 'd'행 및 'e'이름을 가진 행).

미리 감사드립니다.

편집 :

전류 출력 :

+------+ 
| name | 
+------+ 
| a | 
| b | 
| c | 
| d | 
| e | 
+------+ 

원하는 출력 :

+------+ 
| name | 
+------+ 
| a | 
| b | 
| b | 
| c | 
| d | 
| d | 
| e | 
+------+ 

나는 별개 제거 할 수 없습니다. 나는 더 많은 배경을 제공해야했다. 테이블의 각 항목에는 중복 된 이름이있는 다른 행이있을 수 있습니다.

내가 별개로 필요로하는 이유는 'a'라는 이름으로 30 행을 원하지 않기 때문입니다. 난 그냥 쿼리에 입력 한 각 항목에 대해 하나의 행을 원한다.

+0

귀하의 질문에 귀하의 결과가 포함되어 있습니다. –

+2

'DISTINCT'를 사용하지 마십시오. 그냥'SELECT 이름 ... ' –

+0

내 질문에서 DISTINCT를 제거 할 수없는 이유를 설명하기 위해 내 질문을 편집했습니다. –

답변

1

귀하는이 같은 union all를 사용하여 수행 할 수 있습니다

select distinct name from t1 where name in ('a','c','e') 
Union all 
select distinct name from t1 where name in ('a') 
order by name; 

SQL Fiddle

넣어 모든 별개의 행 편집 togather입니다에서 하나 개의 조건을 및 기타 중복을 추가 필요한 행.

+0

좋습니다. 나는 그것이 내가 원하는 것을 제공한다고 생각한다. 그것을 만들 수있는 방법이 있습니까? 내 예제는 분명히 매우 단순하지만, 그것이 그것이라고하는 이유는 10 ~ 50 개의 쿼리를 수행 할 필요가 없기 때문입니다. 거의 모든 '이름'은 내가 묻는 질문과 다릅니다. 이것은 나를 위해 꽤 프린지 경우를 해결하기위한 것입니다. –

+0

@MiloGertjejansen이 답변을 편집했습니다. – 7alhashmi

+0

시작 게시물에서 볼 수 있듯이 '검색어에 입력 한 각 항목에 대해 하나의 행만 입력하면됩니다.' – FSou1

1

단어 DISTINCT이 (가) 알려지지 않았습니까? 그냥 제거하십시오!

+0

내가 왜 'DISTINCT'를 제거 할 수 없는지에 대한 편집을 추가했습니다. –

+1

3NF에 대해 자세히 알아보기 - http://en.wikipedia.org/wiki/Third_normal_form –

0
SELECT `name` FROM `mydb` 
WHERE `name` IN ('a', 'b', 'b', 'c', 'd', 'd', 'e'); 
0

DISTINCT 키워드는 mysql에 중복 행을 표시하지 않도록 지시합니다. 별다른 질문없이 쿼리를 사용하십시오.