1

次のテーブルがあります

tab_1: 

(rs)
rs1
rs2
rs3

tab_2: 

(rs) (cell) (tf)
rs1  A549    tf1
rs1  C555    tf2
rs3  B333    tf1

tab_1 のみの列をループして確認する必要があります。

SELECT count(distinct cell) from tab_2 where rs = 'rs1'
union all
SELECT count(distinct cell) from tab_2 where rs = 'rs2'
union all
SELECT count(distinct cell) from tab_2 where rs = 'rs3';

そして結果を得る

2
0
1

Cursor がどのように機能するか、または単純なループ(

4

1 に答える 1

2

rs2にあるが ではtab_1ないのゼロ カウントを含めたい場合はtab_2LEFT JOIN

UNIONまた、値ごとに行う必要はありません-基本的な方法GROUP BYでうまくいきます:

SELECT tab_1.rs, COUNT(DISTINCT tab_2.cell)
FROM tab_1
LEFT JOIN tab_2 ON tab_1.rs = tab_2.rs
GROUP BY tab_1.rs
ORDER BY tab_1.rs

サンプル データを使用すると、このクエリの結果は次のようになります。

rs1   2
rs2   0
rs3   1

ここに SQLFiddle があります。

于 2013-05-30T13:32:53.623 に答える