我有一个像这样的查询:
SELECT IF(@param = 42, 'static', SELECT ... );
但它不起作用,因为我无法在IF()中插入SELECT语句。我的问题是我不能这样做(在sql之外使用if-then语句)因为“架构限制”。
选择是否评估基于参数值的查询的任何解决方案?
答案 0 :(得分:2)
您不需要select
:
select (case when @param = 42 then 'static' else date_format(now(), '%Y-%m-%d') end)
请注意,您尝试混合两种不同的类型 - 日期时间和字符串。您应该使用首选格式将日期时间显式转换为字符串。
您可以使用if()
来撰写此内容。 case
稍微更通用,也是ANSI标准。