为可怕的问题标题道歉,不知道如何更好地表达它。
所以要开始。
**Table Dummy_Table**
id description filter_key
1 Test Record1 filterkey1
2 Test Record2 filterkey1
3 Test Record1 filterkey2
4 Test Record2 filterkey2
The records with filterkey1 map to a table like this
**Table Mapping_table**
Dummy_Table_id someother_key (one(Dummy_Table_id) to many(someother_key)
1 x
1 y
1 z
1 r
2 y
2 r
现在:在查询中,我使用描述在Dummy_Table中将id映射到彼此,所以我最终得到这样的结果集
id_for_filter_key1 id_for_filterkey2
1 3
2 4
好的,这一切都很好,这是下一步我遇到问题。我需要将记录添加到 Table Mapping_table ,这应该看起来像此
**Table Mapping_table**
Dummy_Table_id someother_key
3 x
3 y
3 z
3 r
4 y
4 r
因此,无论id为filterKey1,我都希望将它的someother_key应用于带有filterkey2的id(filterKey1和filterkey2相互关联及其描述)
现在我不知道我是否过于复杂。我会告诉你我的问题是什么。
我在数据库中有filterkey1的记录映射到映射表。之后我用filterkey2添加了记录。这些行只是与另一个过滤键重复。现在我需要使用filterkey2将相同的映射应用于记录< / p>
更改表结构不是atm的选项。我需要为DBA提供一个插入查询来实现此目的。
非常感谢提前。
答案 0 :(得分:0)
此查询提供缺失值:
SELECT d.id_for_filterkey2, m.someother_key
FROM Mapping_table m
JOIN Dummy_Table d ON m.Dummy_Table_id = d.id_for_filter_key1
演示:http://sqlfiddle.com/#!4/61ddfe/2
当我们缺少值时,我们可以将它们合并到Mapping_table:
MERGE INTO Mapping_table m
USING( copy-the-above-query-and-paste-it-here) x
ON (x.id_for_filterkey2 = m.Dummy_Table_id)
WHEN NOT MATCHED THEN
INSERT( Dummy_Table_id, someother_key )
VALUES( x.id_for_filterkey2, x.someother_key );