-2
我試過在這裏搜索這個特定的主題,但還沒有找到答案...無論如何,我的目標是更新表(我們稱之爲t_item),具體地說,列owner_id與值取決於另一個表(t_item_geo,然後鏈接到t_geo)。Oracle SQL更新
我不完全確定下面的語法是否對更新語句實際有效。
UPDATE t_item SET owner_id= 6993 WHERE t_item.owner_id in
(SELECT t_item.owner_id FROM
t_item,
t_item_geo,
t_geo
WHERE
t_item.id = t_item_geo.item_id and
t_item_geo.geo_id = t_geo.id and
t_item.owner_id in (SELECT id FROM t_user WHERE network_id='fffffff') and
t_geo.id in (SELECT id FROM t_geo WHERE full_name = 'yyyyyyy')
);
不管怎樣,我與此查詢的問題是,它更新比它應該更行 - 如果我只是分開的select語句Oracle返回〜750行,但UDPATE本身更新超過4000行。這幾乎就像條件完全被忽略 - 這會指向我可能不正確的語法。
我需要根據從其他幾個「連接」表中選擇來更新表中的特定值。希望它是有道理的。
感謝您的貢獻!
更新:對不起 - 也許這個問題本身並不明確,但編輯的項目的正確數量應該是〜750而不是〜4000。謝謝!
這應該工作 - 即使我fthe子查詢中有750行,有可能是4000匹配的IDS – Randy
我與蘭迪同意,如果owner_id不是PK的t_item表(或一個唯一的列),可能有很多行匹配那些750個標識符 – JordanBean
那麼,您可以使用[fiddle](http://www.sqlfiddle.com)並查明它是否有效。 – hd1