Mysql 什么时候查询结果是非标量的?

Mysql 什么时候查询结果是非标量的?,mysql,sql,database,Mysql,Sql,Database,我正在阅读,在:=操作符的部分中,它说 右侧的值可以是文字值、另一个存储值的变量或任何生成标量值的合法表达式,包括查询结果(前提是该值是标量值) 如果我理解正确,标量值是表示固定值的值,而不是值的范围或集合或对象 一般来说,我对SQL非常陌生,所以我不太理解引用末尾的附加语句。查询的结果何时为非标量值?是不是一个查询只是从其结果中的一行返回多个列?如果是这样的话,如果这些结果不能存储在变量中,如何在MySQL脚本中有意义地使用它们呢?标量值有一列和一行。您不能将这样的多值结果分配给MySQL会话

我正在阅读,在
:=
操作符的部分中,它说


右侧的值可以是文字值、另一个存储值的变量或任何生成标量值的合法表达式,包括查询结果(前提是该值是标量值)

如果我理解正确,标量值是表示固定值的值,而不是值的范围或集合或对象


一般来说,我对SQL非常陌生,所以我不太理解引用末尾的附加语句。查询的结果何时为非标量值?是不是一个查询只是从其结果中的一行返回多个列?如果是这样的话,如果这些结果不能存储在变量中,如何在MySQL脚本中有意义地使用它们呢?

标量值有一列和一行。您不能将这样的多值结果分配给MySQL会话变量

但您可以将多个列分配给多个变量

SELECT a, b, c FROM mytable INTO @varA, @varB, @varC;
有关更多详细信息,请参阅。

这样的查询是标量子查询。这样的子查询有两个重要属性:

  • 子查询只返回一列
  • 子查询最多返回一行
如果子查询不返回任何行,则指定的值为
NULL

这是一个子查询。您可以使用
选择
指定多个值:=

select @var1 := col1, @val2 := col2
from . . .;

(前提是该值是标量值)=(如果出现一行/一列结果集,则允许此值)