2011-07-09 62 views
0

我想創建一個函數或過程,我可以在mysql中使用,但我不確定語法是什麼。我想要做的是從列中獲取值,並查看它是1還是2,並基於該值返回列A或B中的值。 因此,例如,我的選擇函數將如下所示:在mysql中創建函數

select a, b, c, functionA(c) from table; 

下面是我的功能

functionA(int x){ 
     if(x==1) 
      //return value in column A 
     else 
      //return value in column B 
} 
+0

你可以在不使用函數的情況下做到這一點,它會表現得更好。選擇案例,當c = 1,然後另一個b從表 – gordy

+0

結束@Gordy - 這應該作爲下面的答案發布。 –

+0

@oipsl:這是一個時間從你的個人資料中'已知'數組中刪除'SQL'和'mysql') – zerkms

回答

0

函數將無法返回從表中任何你不傳給你想要做什麼,需要3個參數:

create function functionA(p1 integer, p2 integer, p3 integer) returns integer 
begin 
    if p1 = 1 then 
     return p2 
    else 
     return p3 
    end if; 
end; 

..和你查詢是:

select a, b, c, functionA(c, a, b) from table; 

但是它的效率更高,更容易剛剛情況下,或者對於這樣一個簡單的查詢:

select case when c=1 then a else b end from table;