在编写SQL查询时需要一些帮助

时间:2014-03-27 15:34:26

标签: oracle11g

希望你做得好。我是SQL编码的新手。我想编写一个查询,查找两个表之间的差异,并将更新或新数据写入第三个表。我的两个表具有相同的列名。捕获更改的第三个表有额外的列称为注释。我想根据行修改插入注释,无论是新行还是更新行。

**TABLE1 (BACKUP)**
KEY,FIRST_NAME,LAST_NAME,CITY
1,RAM,KUMAR,INDIA
2,TOM,MOODY,ENGLAND
3,MOHAMMAD,HAFEEZ,PAKISTAN
4,MONIKA,SAM,USA
5,MIKE,PALEDINO,USA

**TABLE2 (CURRENT)**
KEY,FIRST_NAME,LAST_NAME,CITY
1,RAM,KUMAR,USA
2,TOM,MOODY,ENGLAND
3,MOHAMMAD,HAFEEZ,PAKISTAN
4,MONIKA,SAM,INDIA
5,MIKE,PALEDINO,USA
6,MAHELA,JAYA,SL



**TABLE3 (DIFFERENCE FROM TABLE2 TO TABLE1)**
KEY,FIRST_NAME,LAST_NAME,CITY,COMMENT
1,RAM,KUMAR,USA,UPDATE
4,MONIKA,SAM,INDIA,UPDATE
6,MAHELA,JAYA,SL,INSERT

其他人?我想更新我的评论列,无论是新插入还是更新现有行

2 个答案:

答案 0 :(得分:1)

@ danny117在一般意义上是正确的虽然我认为使用MINUS更好

SELECT * FROM TABLE2 
MINUS
SELECT * FROM TABLE1

您可能还想查看this documentation,其中详细介绍了减号,相交

答案 1 :(得分:0)

INSERT INTO TABLE3
SELECT KEY,FIRST_NAME,LAST_NAME,CITY,NULL AS COMMENTS FROM TABLE2
MINUS 
SELECT KEY,FIRST_NAME,LAST_NAME,CITY,NULL AS COMMENTS FROM TABLE1;


UPDATE TABLE3 
SET COMMENTS =
CASE 
WHEN 1=(SELECT 1 FROM TABLE1 WHERE TABLE1.KEY=TABLE3.KEY) THEN 'UPDATED'
ELSE 'INSERTED'
END
相关问题