2013-01-14 87 views
3

是什麼在select查詢:=Into之間的區別?的MySQL ::選擇爲

如:

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

我注意到當使用':='時查詢的結果出現了,但是當使用'into'時結果被傳送給變量出現在查詢結果中。那有效嗎? –

+0

@RaedAlsaleh從這一點... SELECT INTO沒有結果集:) –

回答

0

可以使用INTO子句將輸出寫入文件以及將其存儲在變量中。

雖然,賦值運算符:=僅將標量值分配給變量。

0

的主要區別是,SELECT column INTO @Foo FROM table應針對只有一個行,否則,你會得到一個錯誤。爲了避免這種情況,您喜歡使用LIMIT 1

(順便說一句,你不會得到一個結果)

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

0

就功能而言,如果查詢返回一行,它們與您的示例相同。但使用

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

具有輸出用於變量賦值的結果,而所述一個與SELECT .. INTO不的副作用。

另請注意,INTO比僅將列變量選擇到變量中有更多的用例。