我的原始查询-
CREATE TABLE admin.FctPrfitAmt_rpt AS
SELECT rcn.* FROM
(SELECT t1.* FROM (SELECT * FROM admin.FctPrfitAmt t2 WHERE t2.scenario_id NOT IN(SELECT DISTINCT t3.scenario_id FROM admin.FctPrfitAmt_incr t3)
UNION ALL
SELECT * FROM admin.FctPrfitAmt_incr) t1) rcn;
问题是,目前这个查询需要很多时间,因为涉及的记录数量很多。
有没有办法调整这个查询?
我试过这种方法,但不起作用-
CREATE TABLE admin.FctPrfitAmt_rpt AS
SELECT * FROM admin.FctPrfitAmt t2
WHERE t2.scenario_id NOT exists (SELECT 1 from admin.FctPrfitAmt_incr t3 where t2.scenario_id = t3.scenario_id)
UNION ALL
SELECT * FROM admin.FctPrfitAmt_incr
错误-我的配置单元版本似乎不支持“not exists”,因此对于我的方法,我得到以下错误:
编译语句时出错:失败:parseexception行3:25无法识别表达式规范中“not”(不存在)()附近的输入
3条答案
按热度按时间yduiuuwa1#
最好在“select-in”部分连接这两个表,并过滤掉join键上不为null的行。
gopyfrb32#
如果您的所有数据都由基本类型组成(没有数组、Map等),
您可以使用以下查询:
4urapxun3#
你的语法错了。
NOT EXISTS
不应在前面加上t2.scenario_id
正如我们所看到的,场景id在两个表上都是倾斜的,它在连接上创建了一个巨大的乘积。