从2个联接表合并到表

时间:2019-07-24 14:25:35

标签: sql oracle oracle11g merge

例如,我有两个表,分别是id,age,status和height。还有一个表RESULT,我需要合并到该表。

表1

*id age status*
1  15   1
2  16   1
3  17   0

表2

*id height*
1  160
2  170
3  180

结果表为:

结果表

*id age height*
1  15   160

我需要将ID为1的表1中的ID,高度,年龄插入到Result表中,状态为1。

我怎么写类似的东西

Merge into Result
USING(Select ... from Table1
join Table2 on Table1.id=Table2.id where status=1)
When Not Matched THEN
Insert into Result VALUES(Table1.id,age,height)

我需要获得

结果

*id age height*
1   15   160
2   16   170

那么我该如何实现将在结果中找到ID = 2的用户的合并

表并插入并且不会插入id = 1的用户,因为它已经在表中了?

2 个答案:

答案 0 :(得分:1)

尝试一下:

MERGE INTO RESULT R USING (
                              SELECT
                                  T1.ID,
                                  T1.AGE,
                                  T1.STATUS,
                                  T2.HEIGHT
                              FROM
                                  TABLE1 T1
                                  JOIN TABLE2 T2 ON T1.ID = T2.ID
                              WHERE
                                  STATUS = 1
                          ) DATAA 
ON ( R.ID = DATAA.ID ) 
WHEN NOT MATCHED 
THEN INSERT (
    ID,
    AGE,
    HEIGHT ) 
    VALUES (
    DATAA.ID,
    DATAA.AGE,
    DATAA.HEIGHT )

干杯!

答案 1 :(得分:0)

下面是需要一起运行整个查询的sql查询

插入结果
从t1.Id = t2.Id的Table1 t1内部联接Table2 t2中选择t1.Id,t1。年龄,t2.height,其中t1.status = 1