2010-12-15 120 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|