2014-12-05 491 views
7

我想創建一個相當於MySQL中的(x - y == 0) ? return 0 : return 100的語句。事情可能是這樣認爲:相當於三元運算符的SQL語句

SELECT id, [(integer_val - 10 == 0) ? 0 : 100] AS new_val FROM my_table 

我想每行中的一個屬性比較到一定數量,如果該數量和行數之間的差爲0,我希望它給我0,否則,我希望它給我100

例子:

(正在 '相比,' 號10)上my_table應用此查詢:

id | integer_val 
=================== 
1 10 
2 10 
3 3 
4 9 

會退貨:

id | new_val 
=================== 
1 100 
2 100 
3 0 
4 0 

我該怎麼做?

+0

你爲什麼不使用case語句 – Exhausted 2014-12-05 04:52:15

回答

5

試試這個:

SELECT id, IF(integer_val = 10, 100, 0) AS new_val 
FROM my_table; 

OR

SELECT id, (CASE WHEN integer_val = 10 THEN 100 ELSE 0 END) AS new_val 
FROM my_table; 
4

使用case when聲明:

select *, (case when integer_val = 10 then 100 else 0 end) as New_Val 
from yourtable 
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語句不同。