2010-12-15 142 views
2

我試圖做這樣的事情在我的MySQL存儲過程:IF語句選擇,MySQL的

if val > SELECT numericalValue FROM table where userId=theUserId then .. 

它是確定要做到這一點,或者我必須存儲在臨時numericalValue

+0

「專賣店numericValue在一個臨時的,」你在臨時表是什麼意思? – 2010-12-15 19:33:18

回答

2

您可以在if語句中包含select語句。

它需要在括號中,它必須評估每次單行,因此它非常適用於資金和計數,如果你是返回一個字段的值,你將要使用LIMIT 1

你也可以使用一個變量,這也是可行的。

+0

噢,這是缺少的括號,'如果val>(SELECT數字值從表,其中userId = theUserId)然後..' – bobobobo 2010-12-15 19:46:16

+0

是的,括號將是爲什麼沒有運行。 – Jay 2010-12-15 20:18:16

1

您不應該這樣做,但如果您打算在代碼的其他地方重新使用選區,它會使事情更加方便。

此外,您應該使用以下語法指導:當你說

CREATE PROCEDURE sp_condition(IN var1 INT) 
BEGIN 
IF (val > SELECT numericalValue FROM table where userId='theUserId') 
    THEN SELECT 'greater'; 
    ELSE SELECT 'less than or equal'; 
END IF; 
END|