0
id address retailer
1   A        11
2   A         11
3   A         11
4   A         12
5   A         13
6   B         12
7   B         12
8   B         13

私の出力は

id address retailer
1   A        11
4   A         12
5   A         13
6   B         12
8   B         13

つまり、私のクエリは、同じ住所を持つが同じ小売業者ではないID を返す必要があります。

これをどのようにまとめますか?

4

5 に答える 5

2

重複のない列で結合していると仮定すると、これは最も一般的なケースです。

  • inner joinとは の結果A、つまりベン図の交点の内側の部分を返します。BA intersect B

  • outer joinとは、 の結果、つまりベン図和集合の外側の部分をA提供します。BA union B


例:

2 つのテーブルがあり、それぞれに 1 つの列があり、次のようなデータがあるとします。

A    B
-    -
1    3
2    4
3    5
4    6

(1,2) は に固有A、(3,4) は共通、(5,6) は に固有であることに注意してくださいB

Inner join:

同等のinner joinクエリのいずれかを使用すると、2 つのテーブルの共通部分、つまり共通の 2 つの行が得られます。

select * 
from a 
INNER JOIN b on a.a = b.b;

select a.*,b.*  
from a,b 
where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

Left outer join:

Aleft outer joinは、A のすべての行に加えて、B の共通の行を返します。

select * 
from a 
LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  
from a,b 
where a.a = b.b(+);

a |  b  
--+-----
1 | null
2 | null
3 |    3
4 |    4

Full outer join:

Aはandfull outer joinの結合、つまり A のすべての行と B のすべての行を返します。A の何かが B に対応するデータを持たない場合、B の部分は null であり、その逆も同様です。AB

select * 
from a 
FULL OUTER JOIN b on a.a = b.b;

 a   |  b  
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5
于 2013-03-19T10:46:23.963 に答える
2

group by以下のように句を使用してみてください。

select min(id), address, retailer
from tab
group by address, retailer
于 2013-03-19T10:49:11.247 に答える
0

必要なクエリは次のとおりです。

SELECT min(id), address, retailer
FROM table1 AS t1
group by address, retailer
order by address

これがソースです

于 2013-03-19T10:53:33.290 に答える
0

これを使用してください:それは働いています:

 SELECT * FROM `sampletable` GROUP BY address, retailer
于 2013-03-19T10:53:42.223 に答える
0
select min(id) as id,address, retailer 
from table1 
group by address, retailer
order by id
于 2013-03-19T10:50:03.213 に答える