:=
查询中 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;
答案 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
具有更多用例,而不仅仅是将列变量选择到变量中。