在何处根据多个条件过滤数据

时间:2016-09-30 06:40:31

标签: sql oracle

假设我有一个大表TBL_LARGE_TABLE,说100列(column1,column2,... column100都可以为空),我的客户端给了我一个查询,所以我可以过滤掉某些行:

SELECT * FROM TBL_LARGE_TABLE 
WHERE 
COLUMN2='00123'
AND 
(COLUMN3 LIKE '%garbage%' OR COLUMN3 LIKE '%trash%')
AND 
COLUMN100='0';

现在,我想将TBL_LARGE_TABLE中的数据放入另一个表TBL_ANOTHER_LARGE_ONE。从TBL_LARGE_TABLE插入TBL_ANOTHER_LARGE_ONE的最佳方法是什么,排除将传递上述SELECT语句的所有行?我不想删除任何数据,我希望原始表保持原样。我只想选择与上面SELECT语句完全相反的内容。

2 个答案:

答案 0 :(得分:0)

INSERT INTO TBL_ANOTHER_LARGE_ONE 
SELECT *
FROM TBL_LARGE_TABLE 
WHERE NOT
(
  COLUMN2='00123'
  AND 
  (COLUMN3 LIKE '%garbage%' OR COLUMN3 LIKE '%trash%')
  AND 
  COLUMN100='0
)

答案 1 :(得分:0)

INSERT INTO TBL_ANOTHER_LARGE_ONE 

SELECT *
FROM TBL_LARGE_TABLE 
WHERE 

  COLUMN2 <>'00123'
  AND 
  (COLUMN3 NOT LIKE '%garbage%' OR COLUMN3 NOT LIKE '%trash%')
  AND 
  COLUMN100 <>'0'
)