2014-01-21 251 views
1

我有一個用戶定義的函數,我想要做一個select並根據它是否大於或小於另一個來選擇一個列。在WHERE子句中使用IF語句

例如:

Select 
    t.A, t.B 
From 
    Table t 
Where 
    if(t.A <= t.B) then 
    use t.A 
    else 
    use t.B 

這可能嗎?提前致謝!

+0

什麼是你預期如果在哪裏會做?在這種情況下,「使用」是什麼意思? – Jodrell

回答

2

好像你要

SELECT 
    CASE 
    WHEN t.A <= t.B 
    THEN t.A 
    ELSE t.B 
    END AS Smaller 
FROM Table t 
1

不!但是你可以使用一個case聲明

Select 
    t.A, t.B 
From 
    Table t 
Where 
    (case when t.A <= t.B then t.A ELSE t.B END) = SomeValue 

,或者更小的列在select語句,只需要那麼

Select 
    (case when t.A <= t.B then t.A ELSE t.B END) as column 
From 
    Table t 

注意 我以前沒有使用SQL普遍,但快速googlez顯示case語句是在9.x版本中添加的?

1

你真的想要?

SELECT MIN(t.A, t.B) AS SmallestAOrB FROM Table t