2014-02-19 110 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