我有两个表'Inventory
'和'Tendor
',其中库存有主键pk_id
,我在Inventory
时更新了“Inventory.ti_name = Tendor.ki_name
”表通过使用以下查询
Update Inventory A set (Used_NAME, ACCOUNT_NUMBER, ti_STATUS)
= (Select B.Using_NAME, B.ACCOUNT_NO, B.ki_STATUS from
Tendor B where A.ti_name = B.ki_name and a.pk_id is not null);
此查询中的任何错误或任何优化的查询?
对于不满足条件Inventory.ti_name = Tendor.ki_name
的用户进行更新后,我想将其作为“Inventory
”表中的新行插入主键pk_id
应该更改
这该怎么做?对于pk_id
我需要做一些逻辑,比如'SEQ.NEXTVAL FROM DUAL'
任何人都可以建议查询
答案 0 :(得分:1)
此查询更新匹配表inventory
和tendor
中的行的搜索。当两个表都包含具有相同值ki_name
的行时,它会更新表inventory
中的行。 tendor
中未找到的inventory
中的所有行都将插入其中:
merge into Inventory a
using Tendor b
on (A.ti_name = B.ki_name)
when matched then update
set a.Used_NAME = B.Using_NAME,
a.ACCOUNT_NUMBER = B.ACCOUNT_NO,
a.ti_STATUS = B.ki_STATUS
when not matched then
insert (pk_id, Used_NAME, ACCOUNT_NUMBER, ti_STATUS)
values (your_seq.nextval, B.Using_NAME, B.ACCOUNT_NO, B.ki_STATUS)
您也可以在insert
声明中使用序列。