我有一个表,它有主键coa\u key,它有7个字段,分别标记为extract\u code1,extract\u code2。。。
现在编写的代码选择带有code1的键,如果它在表2中还不存在,则将其插入表2中。
INSERT INTO ef_extract_codes_t
SELECT coa_key, extract_code1
FROM ef_load_it l
WHERE extract_code1 IS NOT NULL AND
NOT EXISTS (SELECT e.coa_key||e.extract_code
FROM ef_extract_codes_t e
WHERE e.coa_key||e.extract_code = l.coa_key||extract_code1)
除code2外,union all与上述相同,然后重复,直到选中所有7个代码。
有没有人能帮我写一个更好的方法,这样我就不会上吊了?
1条答案
按热度按时间yws3nbqq1#
这只是一个猜测,因为你还没有发布一个个人资料的“挂”执行,但听起来你可以使用
MERGE
命令。但是,如果您的语句在功能上是正确的,并且索引是足够的,那么您可能不必进行极端的重写。因为大多数人可能不会用你给出的表达式创建索引,
e.coa_key||e.extract_code
,我建议更换有了这个:
我相信如果
coa_key
以及extract_code
不能为空。如果它们可以为空,那么您需要决定如何处理这种情况。