2010-07-08 5 views
-1

나는 별개의 선택하려고하지만선택 별개의 행

SELECT Distinct `table1`.`myID` AS `myID`, 
       `table1`.`TypeID` AS `TypeID`, 

내가 놓친 거지 어떤 일이 있는가 작동하지 무엇입니까?

+2

무엇이 효과가 없으며 원하는 결과 대신 어떤 결과가 나타 납니까? 나는 의도하지 않은 방식으로 뚜렷한 것을 사용하려고하고 있다고 생각합니다. 둘 이상의 열을 선택하는 경우 결과 집합에는 각 열에 고유 한 값이 아닌 고유 한 TUPLES (쌍, 세 쌍 등) 값이 포함됩니다 ... –

답변

3

Distinct는 단일 필드에서 작동하지 않으며 전체 행에서 작동합니다. 결과에는 고유 한 행만 포함됩니다. 즉 모든 입력란이 동일한 행만 삭제됩니다.

select table1.myID, min(table1.TypeID) as TypeId 
from ... 
group by table1.myID 

이것은 myID에 대해서는 다른 값으로 당신에게 결과를 줄 것이다, 그러나 당신이 당신 그룹화되지 않은 필드해야한다 : 특정 필드에 고유 한 값을 원하는 경우에

, 당신은 group by 사용할 수 있습니다 얻을 값을 지정하십시오. 이를 위해 minmax과 같은 집계를 사용합니다. MySQL은 집계가없는 필드를 지정할 수있게하지만 처음 나타나는 값을 선택하게됩니다 (첫 번째 값이 아닐 수도 있습니다). 당신이 원하는 것 무엇을 할

+0

단일 레코드에 대해 수행 할 작업은 무엇입니까? – Autolycus

1

한 가지 방법은 다음과 같습니다 당신은 함께 가고있는 값을 알 수 없습니다

myID 1 
myID 2 
myID 3 
TypeID 101 
TypeID 201 
TypeID 301 

: 다음과 같이 각 열에 대해 당신에게 고유 한 값을 줄 것이다

SELECT Distinct 'myID' as IDType, `table1`.`myID` AS ID 
UNION 
SELECT DISTINCT 'TypeID' as IDType, `table1`.`TypeID` AS `ID` 

각 열에 어떤 값이 표시되는지 알 수 있습니다.

1

열에 대해서만 구분을 사용할 수 없습니다.

하위 쿼리를 사용하여 수행하려는 작업을 수행 할 수 있습니다.