在IFNULL()函数中使用另一个查询

时间:2019-05-24 23:31:51

标签: mysql sql

我正在寻找有关SQL查询的帮助。我有一个表payment_plan,其中有列payment_methodvalidtovalidfrompayment_method可以是“ CC”或“ CASH”之类的内容;但是对于所有类型它也可以是'*'。

我正在尝试选择当前处于活动状态且仅与特定付款方式匹配的计划。

但是,如果该payment_method的记录不存在,它将检查以'*'作为payment_method的记录。我尝试使用IFNULL语句仅检查payment_method是否等于'*',如果没有payment_method等于'CC'的记录,但是这样做却出错了。

任何人都知道这样做的更好方法。这是我尝试过的SQLFiddle:

http://sqlfiddle.com/#!9/294845/3

谢谢!

1 个答案:

答案 0 :(得分:1)

我不明白您为什么要使用ifnull()。这是您想要的吗?

SELECT payment_method
FROM payment_plan 
WHERE ptid = 100 AND
      validfrom <= CURDATE() AND
      validto > CURDATE() AND
      payment_method IN ('CC', '*') ;

如果只返回一行,且优先级为非'*'值,则添加:

ORDER BY (payment_method <> '*') desc
LIMIT 1