我想在MySQL中创建一个等同于(x - y == 0) ? return 0 : return 100
的语句。可能看起来像这样的东西:
SELECT id, [(integer_val - 10 == 0) ? 0 : 100] AS new_val FROM my_table
我想将每行中的属性与某个数字进行比较,如果该数字与行中的数字之差为0,我希望它给我0,否则,我希望它给我100
示例:
在my_table
上应用此查询(其中10为'与'对比'):
id | integer_val
===================
1 10
2 10
3 3
4 9
会回复:
id | new_val
===================
1 100
2 100
3 0
4 0
我该怎么做?
答案 0 :(得分:8)
试试这个:
SELECT id, IF(integer_val = 10, 100, 0) AS new_val
FROM my_table;
或强>
SELECT id, (CASE WHEN integer_val = 10 THEN 100 ELSE 0 END) AS new_val
FROM my_table;
答案 1 :(得分:4)
使用case when
声明:
select *, (case when integer_val = 10 then 100 else 0 end) as New_Val
from yourtable
答案 2 :(得分:2)
尝试使用IF
function:
SELECT id, IF(integer_val - 10 = 0, 0, 100) AS new_val FROM my_table
(我坚持你的条件表达式,但它可以简化一点,因为integer_value - 10 = 0
具有与integer_value = 10
完全相同的真值。)
请注意,IF
函数与用于存储程序的MySQL IF
语句不同。