1

2 つのテーブルを結合したいのですが、結果が列の 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 に答える