Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql中的If子句_Sql Server_Tsql - Fatal编程技术网

Sql server sql中的If子句

Sql server sql中的If子句,sql-server,tsql,Sql Server,Tsql,上面提到的查询抛出错误,因为我的sql查询select product name from product返回多个值 有人能帮我吗?试试以下方法: Declare @a varchar(100); If @a = select productname from product 那么 Declare @a varchar(100); SELECT @a = 'MyProduct' 但是,您如何知道要匹配哪些产品;您可能需要WHERE子句。一些示例数据和所需结果会有所帮助。请注意,在这种情

上面提到的查询抛出错误,因为我的sql查询select product name from product返回多个值

有人能帮我吗?

试试以下方法:

Declare @a varchar(100); 

If @a = select productname from product
那么

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

但是,您如何知道要匹配哪些产品;您可能需要WHERE子句。一些示例数据和所需结果会有所帮助。

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

If @a IN (select productname from product)
然而,您的查询在逻辑上似乎是无效的,您应该重新考虑它,例如,您需要说,您要用哪个产品检查@a?您可能需要在查询中添加一些过滤器和/或在if中添加其他过滤器,等等


您可能还需要阅读的答案是使用…

您的意思是使用?这里的预期行为是什么?我们没有足够的信息。错误是告诉你这里的问题;您无法将标量值与包含多行的数据集进行比较,也无法将标量值与包含多行的数据集进行比较。如果返回多个产品,您如何知道要与@a进行比较?你会如何选择?如果你有三种产品,'潘','匙','刀'-你想要哪一种,以及@a-前后是什么?你想做什么要停止错误,您需要选择单个产品-例如,如果@a=从产品中选择productname,其中productname='pan'打印'我选择了pan';这是一个猜测,如果没有别的。我怀疑这次行动更有可能是在这里发生的。尤其是由于子查询没有WHERE,所以表乘积返回的值在添加较低的值之前总是相同的。@Larnu感谢您的评论,我已经更新了我的答案。@Larnu不确定,因为它不清楚,它可能是一个CASE表达式,也可能是aIIF函数。@Sami可能有很多东西——没有示例数据很难分辨。谢谢你的补充意见。
If @a IN (select productname from product)
Declare @a varchar(100); 

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