2014-03-28 114 views
0

我想更新一個表格行,其中: 或者statement1 is truestatement2 is true AND獨立於哪一個是真的,statement3 is also true這是有效的SQL嗎?

這是寫這個SQL語句的有效方法嗎?

$upadte = "UPDATE table SET 
    header = 'value' 
    WHERE (statment1 = 'true' OR statment2 = 'true') AND statement3 = 'true'"; 
+1

執行它並告訴我們你找到了什麼! –

+0

是聲明1,2和3的所有列名? –

+2

如果'statement1'是'varchar'(或其他字符類型)類型的列,那麼這應該是確定的。當你嘗試時發生了什麼? –

回答

0

是該SQL是正確的,其中的一部分,但我認爲「真」必須在不成爲真正的「'」,因爲如果它包裹在‘’將被解釋爲一個字符串expresion,而不是一個布爾值。如果A或B是真的,並且它們是真的,則(A或B)將返回真。首先檢查這個條件是因爲括號。然後thir statetment將被檢查,如果是true,完整表達式將返回true。

$upadte = "UPDATE table SET 
    header = 'value' 
    WHERE (statment1 = true OR statment2 = true) AND statement3 = true"; 
+0

並非所有的DBMS都支持'boolean'數據類型。所以'true''可能是OP使用的DBMS的正確方法。 –

+1

雖然如果沒有布爾類型,'condition = 1'比'condition ='true''更可能 – 2014-03-28 09:37:28