我正在寻找有关SQL查询的帮助。我有一个表payment_plan
,其中有列payment_method
,validto
和validfrom
。 payment_method
可以是“ CC”或“ CASH”之类的内容;但是对于所有类型它也可以是'*'。
我正在尝试选择当前处于活动状态且仅与特定付款方式匹配的计划。
但是,如果该payment_method
的记录不存在,它将检查以'*'作为payment_method
的记录。我尝试使用IFNULL语句仅检查payment_method
是否等于'*',如果没有payment_method
等于'CC'的记录,但是这样做却出错了。>
任何人都知道这样做的更好方法。这是我尝试过的SQLFiddle:
http://sqlfiddle.com/#!9/294845/3
谢谢!
答案 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