第一天如何映射2table条件

How to mapping 2 table condition the first day

我有 2 个 table 列,看起来像这样:

Table一个

key_a, date_a
 'k1', '2015-11-25'
 'k2', '2015-11-10'
 'k3', '2015-10-09'

Table B

id, key_b, date_b
 1, 'k1',  '2015-10-01'
 2, 'k1',  '2015-11-02'
 3, 'k1',  '2015-11-25'
 4, 'k2',  '2015-10-15'
 5, 'k2',  '2015-11-09'
 6, 'k3',  '2015-09-15'
 7, 'k3',  '2015-10-02'
 8, 'k3',  '2015-10-08'

我想在 table 中找到行 B 有 date_b 第一个与相同 key_b:

key_a, date_a,       id, date_b 
 'k1', '2015-11-25', 1,  2015-10-01
 'k2', '2015-11-10', 5,  2015-11-09
 'k3', '2015-10-09', 6,  2015-09-15

我该怎么做?

快速 - 应该有效

SELECT
  key_a, date_a, b.id AS id, b.date_b AS date_b
FROM table_a AS a
JOIN (
  SELECT 
    id, key_b, date_b,
    ROW_NUMBER() OVER(PARTITION BY key_b ORDER BY date_b) AS num
  FROM table_b
) AS b
ON a.key_a = b.key_b
WHERE b.num = 1