SQL中的If子句

时间:2019-06-26 09:20:55

标签: sql-server tsql

Declare @a varchar(100); 

If @a = select productname from product

上述查询引发错误,因为我的sql查询(从产品中选择产品名称)返回多个值。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试类似的东西:

Declare @a varchar(100); 
SELECT @a = 'MyProduct'

然后选择

If @a = select TOP 1 productname from product ORDER BY <some field>

OR

If @a IN (select productname from product)

但是,您如何知道要匹配的产品;您可能需要一个WHERE子句。一些样本数据和预期结果会有所帮助。

答案 1 :(得分:0)

请注意,在这种情况下,您需要将SELECT查询放在括号内!您还应注意,选择查询在这种情况下不应返回多个值。因此,要解决这些问题,您需要将其编写为:

Declare @a varchar(100); 

If @a = (select TOP 1 productname from product)

但是,从逻辑上看,您的查询似乎是无效的,因此您应该重新考虑它,例如,您需要说,要使用哪种产品检查@a?您可能需要添加一些过滤器以进行查询和/或将ELSE添加到if中,等等。

您可能还需要阅读@PeterSmith的答案(使用IN ...)