1

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

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

是否有可能这样做并通过创建更快的查询?

4

3 回答 3

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

于 2012-10-25T16:11:28.300 回答
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
于 2012-10-25T16:12:10.043 回答
0
SELECT urlid,domain_stack.domainid
FROM  domain_stack
INNER JOIN url_stack
ON url_stack.domainid = domain_stack.domainid
GROUP BY domainid
于 2012-10-25T16:13:38.560 回答