2012-10-25 36 views
1

我想连接两个表,但要指定结果应该在其中一列上具有唯一值。SQL:JOIN表结果在其中一列上具有唯一值?

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

而不是

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 

我想获得:

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错误(特征)。在大多数数据库,你可以使用:

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 
相关问题