2012-07-16 86 views
0

我有一个更新查询在where子句中包含多个查询,从而:多个查询

UPDATE Table 'tableA' 
SET FieldA = 'Y' 
WHERE ID IN (SELECT ID 
       FROM tabA) 
     OR ID IN (SELECT ID 
        FROM tabB) 

好了,上面的查询只是询问我有一个简单的例子,但我的问题是我有另一个字段在'tableA'中设置,它的值取决于where子句中执行的两个查询中的哪一个。例如,如果从tabA返回Select ID,那么我想设置一个值,比如在FieldB ='First Query'中。

那么,有没有一种方法来设置一个局部变量对每个查询,我可以传递给set子句,或者有另一种方式?

感谢

+0

如果两者匹配或者您知道这是不可能的事实? – 2012-07-16 10:09:29

+0

这两个查询都不会同时满足 – Andy5 2012-07-16 10:14:19

回答

0

你就不能把它设置为在PHP变量(或任何你使用)?然后在查询中包含变量?

$query = "= 'Y' WHERE ID IN (SELECT ID from tabA) OR ID IN (SELECT ID from tabB)"; 
"UPDATE tableA SET FieldA = " . $query . ", SET FieldB = " . $query . ""; 
+0

不幸的是,否,因为此更新查询作为运行一夜的提取过程的一部分在数据库上运行。所以,我需要知道哪些查询运行以设置值。唯一简单的解决方案是有很多独立的更新查询,对我来说这看起来很差 – Andy5 2012-07-16 10:19:36

+0

嗯,认为这不是你想要的东西...我在你的评论之后得到它...... – NewInTheBusiness 2012-07-16 10:20:35

+0

嗨!我设法通过在case语句中添加更新查询的set部分来解决这个问题,并且它可以工作。所以,解决了我自己的问题 – Andy5 2012-07-17 10:22:11