2016-10-04 82 views
0

是有可能在多個列上獲得多個條件的情況下,我嘗試使用此..它不會創建任何錯誤,但結果不正確。我應該使用IF嗎?MySQL多個列在一種情況下的多個條件

SELECT 
    p.name, 
    p.is_deleted, 
(CASE WHEN pro.is_active = 1 THEN 'Active' 
     WHEN pro.is_del = 1 THEN 'Not Active-Promotion Deleted' 
     WHEN p.is_active = 0 THEN 'Not Active-Page Inactive' 
     WHEN p.is_deleted = 1 THEN 'Not Active-Page Deleted' 
    END) AS 'Status' 
FROM 
    page_promotions pro 
    INNER JOIN pages p 
    ON pro.page_id = p.pages_id 

Expected and Current output

+2

不正確?請告訴我們更多。 – jarlh

+1

添加錯誤的輸出和預期的輸出請與 – rbr94

+0

一起使用示例表數據。 – jarlh

回答

0

CASE語句從第一評估到最後。一旦案件得到滿足,該聲明將結束。您可能需要爲每個案例添加附加條款,或對其進行重新排序,以達到所需結果。

這是SQL的行爲:

  • 爲例表達式計算爲第一真條件只要情況滿足則結束該條件。
  • 如果沒有真實條件,則評估爲ELSE部分。
  • 如果沒有真實的情況,沒有ELSE部分,它的計算結果爲NULL

添加一些aditional的條件,以每一個案件或重新排序,以獲得正確的結果

你的情況讓慾望輸出

SELECT 
    p.name, 
    p.is_deleted, 
(CASE WHEN p.is_active = 0 THEN 'Not Active-Page Inactive' 
     WHEN p.is_deleted = 1 THEN 'Not Active-Page Deleted' 
     WHEN pro.is_del = 1 THEN 'Not Active-Promotion Deleted' 
     WHEN pro.is_active = 1 THEN 'Active' 
    END) AS 'Status' 
FROM 
    page_promotions pro 
    INNER JOIN pages p 
    ON pro.page_id = p.pages_id 
相關問題