2016-04-20 90 views
0

我有這個表:如何在更新之前檢查記錄的值?

// QandA 
+----+-----------+-----------------+-------------+------+------+ 
| id | post | accepted-answer | question_id | let | type | 
+----+-----------+-----------------+-------------+------+------+ 
| 1 | question1 | null   | 1   | 200 | 0 | 
| 2 | answer1 | null   | 1   | null | 1 | 
| 3 | answer2 | 1    | 1   | null | 1 | 
| 4 | answer3 | null   | 1   | null | 1 | 
+----+-----------+-----------------+-------------+------+------+ 
//              ^0 = question | 1 = answer 

我也有這個疑問:

// this query changes accepted answer 
UPDATE QandA 
SET accepted_answer = IF(id <> :id, NULL, 1) 
WHERE question_id = :question_id; 

現在我想要在更新前檢查let領域。這樣的事情:

if (`let` is null) then {update here} 
else {don't update} 
where `question_id` = :question_id and `type` = 0 

我怎麼能在MySQL中做到這一點?

+2

你可以在哪裏添加''和'let'爲null''嗎? – Kateract

+0

@Kateract emm,似乎是正確的,我認爲這是更難..無論如何謝謝你,我會嘗試它。 – stack

回答

1

你可以使用case語句,下面的語句將更新QandA表。

這將設置accepted_answer爲1時設爲空並且類型爲0

試試看吧,我知道它在MS SQL,只是不能訪問我的SQL框的時刻。

UPDATE QandA SET accepted_answer = 
CASE 
    WHEN let = IS NULL THEN 1 
END 
WHERE type= 0; 
+0

謝謝..投票。實際上,不是隻有一行'type = 0'。所以我認爲你必須改善查詢中的where子句。 – stack

+0

我相信你可以添加額外檢查你想'question_id' =:question_id在哪裏,如果是這樣,只需檢查。 – justinf

相關問題