MySql :: select into

时间:2013-01-14 08:24:58

标签: mysql select

:=查询中 Into 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; 

3 个答案:

答案 0 :(得分:0)

主要区别在于,SELECT column INTO @Foo FROM table应仅定位一行,否则您将收到错误。为避免这种情况,您希望使用LIMIT 1

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

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

答案 1 :(得分:0)

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

虽然,赋值运算符:=只为变量赋予标量值。

答案 2 :(得分:0)

就功能而言,如果查询返回一行,它们与您的示例相同。但是使用

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

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

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