错误答案:
我一开始以为,既然都能拿到值了, 那么把它们合并起来就可以了。后来发现不行。。
1 concat
concat(v1.value ,operator ,v2.value) 它不是一个条件,而只是一个字符串 。
而if (condition, true_value, false_value) ,它这里接收的是条件表达式。而不是字符串。
2 sql执行顺序。
from - where - group by - having - select - distinct -order by - limit
3 left join
-- 这个怎么取值。。我完全没有思路
-- 怎么把它的值 取过来?
后来发现用left join 就可以了。。一瞬间反应不过来。
参考答案:
select left_operand ,operator,right_operand,
(case when v1.value > v2.value and operator = '>' then 'true'
when v1.value < v2.value and operator = '<' then 'true'
when v1.value = v2.value and operator = '=' then 'true'
else 'false' end )
as value
from Expressions e
left join Variables v1 on v1.name = e.left_operand
LEFT JOIN Variables V2
ON E.right_operand = V2.name
;