我想基于列数据执行不同的SELECT。例如,我有一个表http://sqlfiddle.com/#!2/093a2,仅在其中use_schedule = 1时,我才想比较start_date和end_date。否则,请选择所有数据。(不同的选择)基本上,我只想比较开始日期和结束日期,如果仅use_schedule为1,并且如果use_schedule为0,则选择其余数据。
一个例子可能是这样的
select id, name from table
where use_schedule = 0
else
select id, name, start_date from table
where use_schedule = 0 and current_date >= start_date.
基本上,我只有在启用了计划的情况下才查看开始和结束日期的数据。因为如果未启用计划,则没有必要查看日期。只需选择数据。启用计划后,我希望在选择计划数据时更具选择性。
我试图弄清楚MySQL CASE或IF语句是否可以工作,但不能这样做。如何运行此选择?
谢谢。
您可以UNION
用来将2个不同的SQL查询的结果混合并匹配到一个结果集中:
select id, name, null from table
where use_schedule = 0
union
select id, name, start_date from table
where use_schedule = 1 and current_date >= start_date
请注意,两个查询都必须具有兼容的输出字段(相同的编号和类型才能正常工作)。使用UNION
自动仅合并不同的记录-如果要保留双重结果,请UNION ALL
改为使用。
在这种特定情况下,更广泛的条款WHERE
显然也可以工作:
where use_schedule = 0 or (use_schedule = 1 and current_date >= start_date)
但是考虑到这个问题,我假设您的真实情况要复杂一些。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句