2012-03-23 87 views
0

我想從數據庫中提取一個值或其相反的值。我想找到一種方法來執行SQL中的if語句,而不是PHP。有條件地選擇一個值或其相反的Mysql

我的表是這樣的:ID,速度,from_value,to_value

我有$ from_value和$ to_value變量,並想提取相應速度值或其倒數。

我想

SELECT `rate` if `from_value` = $from_value and `to_value` = $to_value 

SELECT (1/`rate`) if `from_value` = $to_value AND `to_value` = $from_value 

只有一個請求。

我已經搜索了很多方法來做CASE,但是我沒有找到一個可行的解決方案。 我可能錯過了一些東西。感謝

回答

2

下面是使用CASE便攜式方法。如果既不符合條件,我也會返回NULL

SELECT 
    CASE 
    WHEN `from_value` = $from_value AND `to_value` = $to_value THEN rate 
    WHEN `from_value` = $to_value AND `to_value` = $from_value THEN (1.0/rate) 
    ELSE NULL 
    END AS rate 
FROM tbl 
+0

+1表示可移植性和默認情況。 – 2012-03-23 18:46:12

+0

謝謝,我會試試看。我當時認爲x和y不起作用。 (這是因爲我精簡了CASE'from_value' !!) – student310 2012-03-23 18:49:41

1

更新IF溶液:

SELECT IF(from_value = $from_value AND to_value = $to_value, rate, 
    IF(from_value = $to_value AND to_value = $from_value, (1.0/rate), NULL) 
FROM your_table 
+0

在這種情況下,**邁克爾**的答案是堅實的。 – 2012-03-23 18:51:00

+0

是的,謝謝。我不能投2個答覆,但你回答了這個問題。 – student310 2012-03-23 18:56:44

相關問題