簡體   English   中英

在一種情況下對多列使用MySQL Multiple條件

[英]MySQL Multiple condition on multiple columns in one case

是否有可能在一種情況下我嘗試使用此方法在多個列上獲得多個條件..它沒有產生任何錯誤,但結果不正確。 我應該使用其他嗎?

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 

預期和當前輸出

CASE語句從頭到尾評估。 案件一經解決,該陳述即告終止。 您可能需要為每種情況添加其他子句,或對其重新排序,以實現所需的結果。

這是SQL的行為:

  • 滿足條件的情況下,CASE表達式立即求值為第一個真實條件。
  • 如果沒有真實條件,則求值為ELSE部分。
  • 如果沒有真實條件且沒有ELSE部分,則結果為NULL

在每種情況下添加一些附加條件或對其重新排序以獲得正確的結果

在你的情況下獲得欲望輸出

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM