2012-07-16 84 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