我使用的是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。
答案 0 :(得分:0)
<强>查询强>:
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中其他两个表中存在提供的年份?那就是: