我是SQL Server的新手,我正在尝试运行以下查询,但是我收到以下错误
Msg 512,Level 16,State 1,Line 20
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。Msg 515,Level 16,State 2,Line 35
无法将值NULL插入列'UserUID',表'PS_Billing.dbo.Users_Product';列不允许空值。 INSERT失败。
这是我的问题:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898
</jvmArguments>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
所以,我想要做的是一个查询,它将列出的项目发送给我的数据库中的所有玩家,而不仅仅是一个。
答案 0 :(得分:1)
我会回答你的第一个。
SET @UserUID = (SELECT UserUID
FROM PS_UserData.dbo.Users_Master
WHERE UserID <> @UserID)
右边的查询几乎可以保证返回多个值。
您只能为标量变量分配单个值,例如@UserUID
。
答案 1 :(得分:0)
请使用这种方式。
SELECT TOP 1 @UserUID = UserUID
FROM PS_UserData.dbo.Users_Master
WHERE UserID <> @UserID
答案 2 :(得分:0)
正如其他人提到的那样,你设置@userId
,它期望单个值到结构,几乎总是有可能返回多个。这简直不会奏效。
话虽如此,您应该尝试避免声明性语言的命令式编程风格。
我的意思是,您几乎总是可以使用while
并使用joins
来实现结果,这是语言的风格,并且始终更快。