2014-02-19 34 views
0

我想更新Table1.field2,我內Table2.field1甲骨文選擇其中FIELDA存在INSTR(fieldB)不同的表

例發現Table1.field1的/更新FIELDA:

UPDATE Table1 t1 
    SET t1.field2 = 'yes' 
where Instr(t2.field1, Table2.field1) > 0 

我已經試過這其他一些方法,我明白我的例子是可以定義的,而不是做它的方式。我只是覺得它展示了我想要實現的最好的東西。

感謝

回答

0

的加入像下面將在笛卡爾結果

UPDATE Table1 t1 SET t1.field2 = 'yes' 
where EXISTS 
(SELECT 'X' FROM Table2 t2 where Instr(t1.field1, t2.field1) > 0 
+0

這似乎適用於小型測試桌。但是對於大表,查詢似乎永遠運行 – user1332534

+0

是的,如果你的兩個表,不能直接連接,它會變得很忙...... Instr(t1.field1,t2.field1)'不是一個表演加入條件.. –

0

使用存在子句中結束了。

UPDATE Table1 t1 
    SET t1.field2 = 'YES' 
WHERE EXISTS 
      (SELECT 1 
      FROM Table2 t2 
      WHERE t1.primary_key = t2.foreign_key 
      and INSTR (t1.field1, t2.field1) > 0); 
+0

什麼是primary_key和foreign_key? – user1332534

+1

@ user1332534我假設他們是共享這兩個表的關鍵,以使更新適當。 (例如Customers.customerID和Orders.customerID),我的意思是primary_key和foreign_key - 你給垃圾/樣板模式我給垃圾列名。 –

+0

每個表的主鍵不會匹配 – user1332534