3

クエリ内の:=との違いは何ですか?Intoselect

例えば:

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

機能に関しては、クエリが 1 つの行を返す場合の例と同じです。しかし、使用して

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

変数の割り当ての結果を出力するという副作用がありますが、 の結果は出力しSELECT .. INTOません。

INTOまた、列変数を変数に選択するだけでなく、より多くのユースケースがあることに注意してください。

于 2013-01-14T08:38:02.777 に答える
0

主な違いは、SELECT column INTO @Foo FROM table1 つの行のみをターゲットにする必要があることです。それ以外の場合は、エラーが発生します。これを回避するには、 を使用しますLIMIT 1

(ところで、結果セットは得られません)

を使用すると、最後のSELECT @Foo := column FROM tableの値が割り当てられます。(すべての行の値を割り当てますが、最後は最後の行の値です)

于 2013-01-14T08:33:30.010 に答える
0

この句を使用しINTOて、出力をファイルに書き込んだり、変数に格納したりできます。

一方、代入演算子は変数にスカラー値を:=代入するだけです。

于 2013-01-14T08:35:31.280 に答える