0

2つのテーブルがあり、それらのテーブル間の共通フィールドが完全に一致する行を選択しようとしていますが、クエリを作成するのは困難です。簡略化したバージョンは次のとおりです。

テーブルは次のようになります(簡略化):

T1:
  id、name、sn

T2:
  id、location、sn

t1.sn=t2.snの場合にのみt1.nameとt2.locを一緒に取得しようとしています。snフィールドは両方で一意であるため、テーブル間で一致するレコードは最大で1つだけです。t1では、すべてのレコードにsnフィールド値がありますが、t2では、それらの約30%がsnに対してNULLを持っています。したがって、結合によってt1よりもいくらか少ない行が生成されることを期待しています。

どうすれば参加できますか?

ありがとう。

サンプルデータ:

t1:
+ --- + -------- + ------- + ----- +
| id | 名前| sn | ... |
+ --- + -------- + ------- + ----- +
| 1 | things1 | 12345 | |
| 2 | things2 | 10000 | |
| 3 | things3 | 33445 | |
| 4 | things4 | 99223 | |
+ --- + -------- + ------- + ----- +

T2:
+ ---- + -------- + ------- + ----- +
| id | loc | sn | ... |
+ ---- + -------- + ------- + ----- +
| 90 | ここ| 12345 | |
| 92 | そこに| NULL | |
| 96 | 近く| 33445 | |
| 99 | 遠い| 99223 | |
+ ---- + -------- + ------- + ----- +

結果:
+ -------- + ------- + ------- +
| 名前| loc | sn |
+ -------- + ------- + ------- +
| things1 | ここ| 12345 |
| things3 | 近く| 33445 |
| things4 | 遠い| 99223 |
+ -------- + ------- + ------- +
4

1 に答える 1

1
SELECT
  t1.name AS name,
  t2.loc AS loc,
  t1.sn AS sn
FROM t1
INNER JOIN t2 ON t1.sn=t2.sn
于 2012-05-08T17:59:33.273 に答える