如何编写if语句在Oracle db中有三个条件

时间:2015-12-10 00:11:08

标签: oracle stored-procedures plsql oracle-sqldeveloper

我使用的是Oracle数据库。我很困惑如何写入存储过程中的条件。

我有四张桌子。

表1:t1

╔════════════╦═════╗
║ CustomerID ║ Year║
╠════════════╬═════╣
║ ACC20011   ║ 2001║
║ ACC30122   ║ 2001║
║ ACC12356   ║ 2002║
║ EVG12345   ║ 2003║
║ DAA23445   ║ 2003║
║ DAA23548   ║ 2003║
╚════════════╩═════╝

表2:t2

╔════════════╦═════╗
║ CustomerID ║ Year║
╠════════════╬═════╣
║ ACC20011   ║ 2001║
║ ACC30122   ║ 2001║
║ ACC12356   ║ 2002║
║ EVG12345   ║ 2003║
║ DAA23445   ║ 2003║
║ DAA23548   ║ 2003║
╚════════════╩═════╝

表3:t3

╔════════════╦═════╗
║ CustomerID ║ Year║
╠════════════╬═════╣
║ ACC20011   ║ 2001║
║ ACC30122   ║ 2002║
║ ACC00001   ║ 2003║
║ EVG00002   ║ 2003║
║ DAA23048   ║ 2003║
║ DAA23548   ║ 2001║
╚════════════╩═════╝

结果表:t4

╔════════════╦═════╗
║ CustomerID ║ Year║
╠════════════╬═════╣
║ ACC00001   ║ 2003║
║ EVG00002   ║ 2003║
║ DAA23048   ║ 2003║
╚════════════╩═════╝

表t1,t2是相同的。当给定的输入为“2003”时,应检查t1,t2是否存在“2003”并将t3中的“2003”的CustomerID复制到t4。

我很困惑如何给出if条件。这一年应该在所有三个表中。如果t1,t2,t3中的“2003”则更新t4。

2 个答案:

答案 0 :(得分:0)

SQL Fiddle

<强>查询

insert into t4
select * from t3
where year_nr = 2003
and exists (
    select 1 from t1
    where year_nr = 2003
    )
and exists (
    select 1 from t2
    where year_nr = 2003
    )

<强>查询

select * from t4

<强> Results

| CUSTOMER_ID | YEAR_NR |
|-------------|---------|
|    ACC00001 |    2003 |
|    EVG00002 |    2003 |
|    DAA23048 |    2003 |

答案 1 :(得分:0)

所以你正在对t3中的行进行插入/选择(假设你不想与现有数据合并)t3中其他两个表中存在提供的年份?那就是: