如何将MySQL的NULL值视为0

Kyl*_*yle 2 mysql sql

我加入了两张桌子user_id.在下面的查询中,我比较act_val在table_two,以确保它是介于两者之间或等于min_valmax_val从table_one.但有时user_id在table_two中找不到table_one.在这些情况下,我希望将act_val其视为0并且限定table_one的min_val值较低.那可能吗?怎么会这样?

SELECT tb1.id FROM table_one tb1 
INNER JOIN table_two tb2 WHERE 
   tb1.min_val <= tb2.act_val AND tb1.min_val >= tb2.act_val 
   AND tb2.user_id = tb1.user_id 
GROUP BY ad.id;
Run Code Online (Sandbox Code Playgroud)

Ric*_*iwi 6

您需要LEFT JOIN条件中的user_id链接(ON子句),WHERE子句中的其余部分(过滤器).使用IFNULL时,tb2.act_val在缺失时被视为0 .我也修复了你的第二个条件,它应该是tb1.max _val> = not tb1.min _val> =

     SELECT tb1.id
        FROM table_one tb1 
   LEFT JOIN table_two tb2 ON tb2.user_id = tb1.user_id
       WHERE tb1.min_val <= IFNULL(tb2.act_val,0)
         AND tb1.max_val >= IFNULL(tb2.act_val,0)
    GROUP BY tb1.id;
Run Code Online (Sandbox Code Playgroud)

LEFT JOIN:

如果LEFT JOIN中ON或USING部分中的右表没有匹配的行,则右表使用所有列设置为NULL的行.您可以使用此事实在表中查找在另一个表中没有对应项的行: