0

我有两个表,我试图选择这些表之间的公共字段完全匹配的行,但是事实证明很难编写查询。这是一个简化版本:

表格如下所示(简化):

T1:
  id、姓名、sn

T2:
  id,位置,sn

我试图仅在 t1.sn=t2.sn 的情况下将 t1.name 和 t2.loc 放在一起。sn 字段在两者中都是唯一的,因此表之间最多只有 1 条记录匹配。在 t1 中,所有记录都有一个 sn 字段值,但是在 t2 中,大约 30% 的记录的 sn 为 NULL。因此,我期望连接产生的行数比 t1 少一些。

我将如何加入?

谢谢。

样本数据:

t1:
+---+--------+-------+-----+
| 编号| 姓名 | 锡 | ... |
+---+--------+-------+-----+
| 1 | 东西1 | 12345 | |
| 2 | 东西2 | 10000 | |
| 3 | 事情3 | 33445 | |
| 4 | 东西4 | 99223 | |
+---+--------+-------+-----+

T2:
+----+--------+--------+-----+
| 编号 | 位置 | 锡 | ... |
+----+--------+--------+-----+
| 90 | 这里 | 12345 | |
| 92 | 那里| 空 | |
| 96 | 附近 | 33445 | |
| 99 | 远| 99223 | |
+----+--------+--------+-----+

结果:
+--------+-------+--------+
| 姓名 | 位置 | 锡 |
+--------+-------+--------+
| 东西1 | 这里 | 12345 |
| 事情3 | 附近 | 33445 |
| 东西4 | 远| 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 回答