2017-01-09 71 views
0

我想将一个SQL Server查询转换为MYSQL,但是遇到了IF语句的问题。在SQL Server版本中,它们用于指导基于标志的查询流程,但我无法使其在MYSQL中工作。我已经概述了代码如何工作如下:在MYSQL中的流量控制

该脚本根据查询和数据库之间可以匹配多少数据来设置标志。

它随后执行基于所述标志选择语句:如果标志= 1选择A,B,C,其中匹配逻辑

否则,如果标志= 2选择d,E,F,其中不同匹配逻辑

我曾尝试使用IF和CASE当两者都没有工作。我通常会将IF放在WHERE子句中,但根据标志选择不同的列。

是否有一个函数会执行IF/ELSE流程MYSQL?

任何帮助将不胜感激!

+0

MySQL需要一个外壳 - 程序,函数,触发器,... –

回答

0

假设类型和列数是兼容的,你可以这样做:

select a, b, c 
from t 
where (v_flag = 1) and match_condition_1 
union all 
select d, e, f 
from t 
where (v_flag = 2) and match_condition_2; 

另一种方法是使用存储过程。在MySQL中,if控制流程语句只允许在编程块 - 存储过程,存储函数和触发器中使用。

+0

谢谢! Union没有工作,因为在每个select语句中有不同数量的列被选中,所以我把它放在一个存储过程中。 – jackg1787