如果为null则忽略其他日期范围(mysql)

时间:2017-05-05 06:12:01

标签: mysql sql if-statement

我想制作一个if语句,以便不过滤掉那些NULL idBillingTransaction

的语句

所以,如果idBillingTransaction不为null然后是daterange,那么idBillingTransactions中的日期范围应该没有过滤器(因为它有空值)

这是代码

select * 
from subscription cs
  LEFT JOIN
  billing_transaction bt
    ON CONVERT(cs.msisdn USING latin1) = bt.msisdn 

    where 
      bt.idBillingTransaction
      BETWEEN (SELECT idBillingTransaction
               FROM transaction_ids
               WHERE dt = '2017-03-31')
      AND (SELECT idBillingTransaction
           FROM transaction_ids
           WHERE dt = '2017-04-30')

1 个答案:

答案 0 :(得分:0)

我认为您可以通过将WHERE子句修改为不删除NULL ID结算交易来获得您想要的内容:

SELECT * 
FROM subscription cs
LEFT JOIN billing_transaction bt
    ON CONVERT(cs.msisdn USING latin1) = bt.msisdn 
LEFT JOIN transaction_ids t
    ON bt.idBillingTransaction = t.idBillingTransaction AND
       t.dt BETWEEN '2017-03-31' AND '2017-04-30'

我还删除了WHERE条款中的两个子查询,因为我不认为它们是必要的。相反,在id账单交易中再次加入transaction_ids表格会更加清晰,然后比较一系列日期。