使用不同的项SQL更新表

时间:2014-04-09 14:50:11

标签: sql oracle distinct

我正在用两个现有的表NSFABSTRACTS和AGENCIES创建一个新表。我希望结果是word,他们的fileid和org。如果一个单词在文档中出现多次。我只想捕获它一次。我想首先获取新表中的所有单词,然后根据唯一的fileid更新单词列表。以下是我捕获所有这些的查询

在:

FILEID         WORD         ORG
1              HOW          OEC
1              TO           OEC
1              HOW          OEC
1              TO           OEC
2              YOU          DMS
2              YOU          DMS

后:

FILEID         WORD         ORG
1              HOW          OEC
1              TO           OEC
2              YOU          DMS

这是代码。

CREATE TABLE TEMP2(FILEID, WORD, ORG)AS
SELECT A.WORD, A.FILEID, B.ORG
FROM NSFABSTRACTS A JOIN AGENCIES B
ON A.FILEID=B.FILEID;

CREATE TABLE TMP(FILEID, WORD, ORG) LIKE TEMP2;
INSERT INTO TMP
SELECT DISTINCT FILEID, WORD 
FROM TEMP2 
GROUP BY FILEID, WORD;

错误发生在第二件。以下是消息:Error report: SQL Error: ORA-00942: table or view does not exist 00942. 00000 - "table or view does not exist"。它指向INSERT INTO TMP。感谢。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

CREATE TABLE TEMP2(FILEID, WORD, ORG)AS
SELECT DISTINCT  A.WORD, A.FILEID, B.ORG 
FROM NSFABSTRACTS A JOIN AGENCIES B
ON A.FILEID=B.FILEID;

即,应该为表的每一列应用DISTINCT。

答案 1 :(得分:1)

CREATE TABLE TEMP2(FILEID, WORD, ORG)AS
INSERT TEMP2(FILEID, WORD, ORD)
SELECT DISTINCT  A.WORD, A.FILEID, B.ORG 
FROM NSFABSTRACTS A JOIN AGENCIES B
ON A.FILEID=B.FILEID;