2012-10-25 2 views
1

두 테이블을 조인하고 결과가 열 중 하나에서 고유 한 값을 가져야한다고 지정하려고합니다. 대신SQL : 결과 중 하나에서 고유 한 값을 갖는 SQL : JOIN 테이블?

URLID DOMAINID 
13 5 
9  3 
10 3 
11 4 
12 4 
6  2 
7  2 
8  2 
1  1 
2  1 
3  1 
4  1 
5  1 

http://sqlfiddle.com/#!2/70ded/4

나는 좀하고 싶습니다 :

URLID DOMAINID 
13 5 
9  3 
11 4 
6  2 
1  1 

그것이 가능 그 일을하고 만드는 빠른 쿼리?

+0

여러가'DOMAINID', 당신은 그'DOMAINID' 가장 작은'URLID'을 원하는가 있습니까? –

+0

http://sqlfiddle.com/#!2/70ded/9 원하는대로 할 수 있습니까? – mali303

+0

@FrancisP - 아니, 상관없이 하나의 'URLID' – zenpoy

답변

1

참조하십시오. 다음은 MySQL의 방식입니다.

select urlID, domainID 
from (<your query>) as t 
group by domainID 

여기에는 숨겨진 열이라고 불리는 MySQL mis (기능)가 사용됩니다. 대부분의 데이터베이스에서는 사용합니다 :

select min(urlID), domainID 
from (<your query>) as t 
group by domainID 
1

어때요? 난 그냥 urlid에 집계를 적용하고 group by 추가 : 당신은 중복을 제거하기 때문에

SELECT min(urlid) urlid, domain_stack.domainid 
FROM domain_stack 
INNER JOIN url_stack 
    ON url_stack.domainid = domain_stack.domainid 
group by domain_stack.domainid 
order by domain_stack.domainid desc 

, 귀하의 질의가 빨리되지 않습니다 SQL Fiddle with Demo

0
SELECT urlid,domain_stack.domainid 
FROM domain_stack 
INNER JOIN url_stack 
ON url_stack.domainid = domain_stack.domainid 
GROUP BY domainid