如何根据不同的列数据进行选择

NBh*_*tti 7 mysql sql select if-statement

我想根据列数据执行不同的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.
Run Code Online (Sandbox Code Playgroud)

基本上我有数据启用计划,然后查看开始和结束日期.因为如果没有启用计划,则无需查看日期.只需选择数据即可.启用计划后,我希望在选择计划数据时更具选择性.

我试图弄清楚MySQL CASE或IF语句是否可行但不能这样做.我怎么能运行这个选择?

谢谢.

Nie*_*jes 1

您可以将UNION2 个不同 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
Run Code Online (Sandbox Code Playgroud)

请注意,两个查询必须具有兼容的输出字段(相同的数字和类型才能工作)。使用UNION自动合并仅不同的记录 - 如果您想保留双重结果,请UNION ALL改为使用。

在这种特定情况下,更广泛的WHERE- 子句显然也可以工作:

where use_schedule = 0 or (use_schedule = 1 and current_date >= start_date)
Run Code Online (Sandbox Code Playgroud)

但考虑到这个问题,我假设你的真实情况有点复杂。

文档位于 MySQL 站点