不使用密钥

时间:2017-03-21 13:59:41

标签: sql oracle

我有以下情况:

TABLE_1

ID  DESC    TABLE2REF

1   1stRow  2
2   2ndRow  4
3   3rdRow  5
4   4thRow  3
5   5thRow  4
6   6thRow  5

TABLE_2

ID  DESC 
1   Apples
2   Pears
3   Figs
4   Oranges
5   Grapes

不使用TABLE2REF的实际值(假设是TABLE 2 ID的外键),我想创建一个更新查询,更新当前引用Oranges或Grapes的TABLE 1行,而不是参考图)。

我试过了:

我尝试过各种查询而没有成功。任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

我不确定你的实际问题是什么。如果您想了解引用值,则需要table2ref - 隐式或显式 -

以下标识OrangesGrapes不使用table2的行:

update table1
    set table2ref = 3
    where table2ref in (4, 5);

您也可以这样做:

update table1
    set table2ref = 3
    where in (5, 6);

但是,正确的方法是:

update table1
    set table2ref = (select id from table2 where description = 'Figs')
    where table2ref in (select id from table2 where description in ('Oranges', 'Grapes'));

答案 1 :(得分:0)

如果您想使用genrale方式,这可以帮助您:

UPDATE table1 tab1 SET table2ref = tab2.id 
FROM table2 tab2 
WHERE tab2.id = tab1.table2ref