我有一张表TABLE1
,并且有超过10L的记录。
作为要求的一部分,我需要根据以下查询获取一些记录到临时表TEMP_TABLE1
。
CREATE TABLE TEMP_TABLE1 AS (SELECT * FROM TABLE1 tb1 WHERE tb1.repo_id IN (condition A));
而且,我必须根据相反的查询将其余记录输入TEMP_TABLE2
,
CREATE TABLE TEMP_TABLE2 AS (SELECT * FROM TABLE1 tb1 WHERE tb1.repo_id NOT IN (condition A)); --added NOT IN
我的问题是,在第一次执行查询之后,我们是否可以移动表中的其余记录而不需要新的查询,这也需要相同的时间来处理。我在两种情况下使用相同的条件进行过滤。
答案 0 :(得分:0)
INSERT ALL
WHEN repo_id IN (condition A) THEN INTO temp_table1
WHEN repo_id not IN (condition A) THEN INTO temp_table2
SELECT * FROM table1;
首先,您需要创建空的temp_tables:
create table temp_table1 as (select * from table1 where 1=0);
create table temp_table2 as (select * from table1 where 1=0);
如果两个集合都被排除,您可以简单地使用WHEN repo_id not IN (condition A) THEN
而不是第二个条件ELSE
。
conditional inserts的示例(请参阅页面底部)。