第一天如何映射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
我有 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