3

:=Intoin 和有什么不一样select

例如:

SELECT  filesinfo.IsFolder, 
        filesinfo.ReferenceID 
INTO    @IsFolder, @ReferenceID 
FROM filesinfo 
WHERE filesinfo.FileID = @ChildID; 

和:

SELECT  @IsFolder := filesinfo.IsFolder,
        @ReferenceID := filesinfo.ReferenceID 
FROM filesinfo 
WHERE filesinfo.FileID = @ChildID; 
4

3 回答 3

0

主要区别在于,它SELECT column INTO @Foo FROM table应该只针对一行,否则你会得到一个错误。为避免这种情况,您喜欢使用LIMIT 1.

(顺便说一句,你不会得到结果集)

使用SELECT @Foo := column FROM table将分配最后一行的值。(它将分配所有行的值,但最后它是最后一行的值)

于 2013-01-14T08:33:30.010 回答
0

您可以使用该INTO子句将输出写入文件以及存储在变量中。

而赋值运算符:=仅将量值分配给变量。

于 2013-01-14T08:35:31.280 回答
0

在功能方面,如果查询返回一行,它们与您的示例中的四个相同。但是使用

SELECT  @IsFolder := filesinfo.IsFolder,
        @ReferenceID := filesinfo.ReferenceID 
FROM filesinfo 
WHERE filesinfo.FileID = @ChildID;  

有一个副作用是输出变量赋值的结果,而带有的SELECT .. INTO则没有。

另请注意,它INTO具有更多用例,而不仅仅是将列变量选择为变量。

于 2013-01-14T08:38:02.777 回答