2015-08-28 87 views
-3

我列位置,但我需要基於另一列的值返回此列 下面是MySQL SELECT查詢:否則如果使用mysql CASE的條件不起作用?

if(block.block_id IS NOT NULL) 
{ 
location.location = 'BLOCKED' 
}elseif(nvocc.nvocc_id is not null AND nvocc.nvocc_status = 'IN') { 
    location.location = 'NVOCC' 
}else { 
    location.location = location.location 
} 

我TREID與案件conditon但其示值誤差

CASE 
    WHEN block.block_id IS NOT NULL THEN "BLOCKED" 
    WHEN ((nvocc.nvocc_id IS NOT NULL) AND (nvocc.nvocc_status='IN')) THEN "NVOCC" 
    ELSE location.location 
END as location 

上面的查詢返回什麼都沒有,不能正常工作 請別人幫我解決這個問題。

+1

你怎麼看[mySql教程](https://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html) –

+3

可能的重複[如何編寫IF ELSE在MySQL查詢中的語句](http://stackoverflow.com/questions/8763310/how-do-write-if-else-statement-in-a-mysql-query) – Styphon

+0

MySQL中的查詢以'SELECT'開頭,不帶'CASE'。完全不清楚你實際運行的代碼是什麼。 –

回答

1

嘗試使用括號明確你的病情塊與控制流分開塊:

CASE 
    WHEN block.block_id IS NOT NULL THEN "BLOCKED" 
    WHEN ((nvocc.nvocc_id IS NOT NULL) AND (nvocc.nvocc_status='IN')) THEN "NVOCC" 
    ELSE location.location 
END 

嘗試簡化您的查詢,直到它的工作原理,然後逐步增加的條件。

請提供您的錯誤,這是很難猜測。

+0

查詢被執行,但我沒有改變輸出 –

+0

請提供完整的請求,很難知道其他。 – Thomas