MySQL 左連接時,查詢條件查詢某個字段為空或者為特定值解決方案


rt,在查詢時候需要查出字段為空或者為某個特定值的數據,但是又不想使用or去組合。使用函數IFNULL,

IFNULL(ca.is_on_sale,'1')

IFNULL() 函數用於判斷第一個表達式是否為 NULL,如果為 NULL 則返回第二個參數的值,如果不為 NULL 則返回第一個參數的值。

但當用於查詢條件時,查詢空數據需要注意。

(SELECT parent_id from menu where code = #{menuCode} and parent_id != 0) 

當這條語句返回null時,整條語句的返回值都是空的(where分支比select分支優先執行),這時,等價於下面這條語句:

 1 SELECT IFNULL(id,0) from project_menu where code = NULL 

這就不是這個當id為空時,用0替換id返回這個概念了,因為當語句本身就是null時,語句中的函數就不會起作用

 

SELECT DISTINCT 
    '新增' abilityType,
    CASE
      WHEN (cda.`order_from` = 0) 
      THEN "A" 
      WHEN (cda.`order_from` = 1) 
      THEN "B" ELSE "其它" 
    END AS orderFromFROM
    `comp_ability_apply` caa 
    LEFT JOIN `comp_demand_apply` cda 
      ON cda.id = caa.`apply_id` 
    LEFT JOIN `comp_oparty` co 
      ON co.`app_id` = cda.`app_id` 
    LEFT JOIN comp_ability_ext_from_shop ca 
      ON ca.`ability_name` = caa.`ability_name` 
      AND ca.`ability_version` = caa.`version` 
  WHERE caa.`status` = '0' 
  AND IFNULL(ca.is_on_sale,'1') = '1'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM