2012-11-14 5 views
2

저는 MySQL을 처음 접했고이 작업을 수행하는 방법이나 가능한지 확실하지 않습니다.MySQL 테이블의 모든 복제본에 대해 고유 한 행을 반환하십시오.

나는 테이블과 같이 있습니다

Table products 
    id | model | alt_model 
    --  -----  --------- 
    1  abc   abc 
    2  ab-c   abc 
    3  a-bc   abc 
    4  def   def 
    5  ghi   ghi 
    6  gh-i   ghi 
    7  jk-l   jkl 
    8  mno   mno 
    9  m-n-o  mno 
    10  mn-o   mno 
    11  m-no   mno 
    12  pqr   pqr 
    13  stu   stu 

내가 alt_models이 같은 제품의 모든 중복 조합됩니다 쿼리를 할 수 있어야합니다. 중복의 각 쌍은 고유, 순서 다른 결과를 산출하지해야하지만, 결과는 결과는 다음과 같아야합니다

ID1 필드에 낮은 ID가 있어야 전환 :

id1 | id2 | model1 | model2 
---  ---  ------  ------ 
1  2  abc  ab-c 
1  3  abc  a-bc 
2  3  ab-c  a-bc 
5  6  ghi  gh-i 
8  9  mno  m-n-o 
8  10  mno  mn-o 
8  11  mno  m-no 
9  10  m-n-o  mn-o 
9  11  m-n-o  m-no 
10  11  mn-o  m-no 

이것이 가능을?

답변

2

간단한 자체 조인을 수행해야합니다.

SELECT a.id id1, b.id id2, a.model model1, b.model model2 
FROM products a 
JOIN products b 
    ON a.alt_model=b.alt_model   -- alt_model must match 
AND a.id < b.id      -- and id1 is smaller 
ORDER BY id1,id2; 

SQLfiddle for testing here.

+0

빠른 응답을 가져 주셔서 감사합니다. 그것은 완벽하게 작동했습니다! 나는 당신이 스스로 테이블에 가입 할 수 있다는 것을 몰랐다. – ProvocativePanda

+0

내가 방해 받았을 때 나는 [this for this] (http://sqlfiddle.com/#!2ce69/2)에서 일하고 있었다. 귀하의 쿼리를 연결하고, 그것은 작동하는 것 같습니다. – Sammitch

관련 문제