2016-10-08 2 views
2

私はMySQL's documentation on the assignment operatorsを読んでいる、と:=オペレータのためのセクションでは、それが右側の値は、リテラル値、値、または利回り法的表現を保存する別の可変であってもよいクエリ結果はいつスカラーではないでしょうか?

語りますクエリの結果を含むスカラー値(この値はスカラー値です)。

私が正しく理解している場合、スカラー値は、範囲または値のコレクションまたはオブジェクトではなく、固定値を表す値です。

一般的にSQLの新機能であるため、引用文の末尾にある括弧書きの文はわかりません。問合せの結果が非スカラー値の場合はいつですか?クエリで結果の行から複数​​の列が返されるのはなぜですか?もしそうなら、それらの結果を変数に格納できない場合、その結果をMySQLスクリプトでどのように有意義に使用することができますか?

+0

(この値はスカラー値であることを条件とする)=を(一列/ 1 COL結果セットが発生した場合に許可されます) – Drew

答えて

2

スカラー値は1列と1行です。このような複数の結果をMySQLセッション変数に割り当てることはできません。

複数の変数に複数の列を割り当てることができます。

SELECT a, b, c FROM mytable INTO @varA, @varB, @varC; 

詳細については、http://dev.mysql.com/doc/refman/5.7/en/select-into.htmlを参照してください。

3

このようなクエリは、スカラーサブクエリです。このようなサブクエリには、次の2つの重要なプロパティがあります。

  • サブクエリは正確に1つの列を返します。
  • サブクエリは多くても1つの行を返します。

サブクエリが行を戻さない場合、割り当てられた値はNULLです。

サブクエリです。もしSELECT:=使用して複数の値を割り当てることができます。

select @var1 := col1, @val2 := col2 
from . . .; 
関連する問題