Oracle 我在我的SQL开发人员中测试了一个关于;按“排序”的子查询;

Oracle 我在我的SQL开发人员中测试了一个关于;按“排序”的子查询;,oracle,subquery,sql-order-by,Oracle,Subquery,Sql Order By,我对“ORDERBY子句中的子查询”有疑问。下面的请求返回错误。这是否意味着ORDERBY子句中的子查询必须是标量 select * from employees order by (select * from employees where first_name ='Steven' and last_name='King'); 错误: ORA-00913:值太多 91300000-“值太多” 这意味着对于orderby子句可以 表情 位置或 列别名 子查询不是这两个查询。它意味着for

我对“ORDERBY子句中的子查询”有疑问。下面的请求返回错误。这是否意味着ORDERBY子句中的子查询必须是标量

select * 
from employees
order by (select * from employees where first_name ='Steven' and last_name='King');
错误:

ORA-00913:值太多
91300000-“值太多”

这意味着对于orderby子句可以

  • 表情
  • 位置或
  • 列别名
子查询不是这两个查询。

它意味着for
ORDER BY
子句可以是

  • 表情
  • 位置或
  • 列别名

子查询不是这两种查询。

是的,这意味着如果您按顺序使用子查询,它必须是标量查询

使用
select*
时,子查询将返回多个列,DBMS将不知道使用这些列中的哪一列进行排序。如果您只选择了一列,您仍然需要确保只选择一行。(区别在于Oracle会立即发现列过多的问题,但只有在获取数据时才会检测到行过多。)

这是允许的:

select * from employees
order by (select birthdate from employees where employee_id = 12345);
这是一个标量查询,因为它只返回一个值(一列,一行)。但当然,这仍然没有原始查询的意义,因为子查询结果独立于主查询,即它为表中的每一行返回相同的值,因此排序无效

最后一句话:
orderby
中的子查询意义不大,因为这意味着您按未显示的内容进行排序。例外情况是在查找sortkey时。例如:

select *
from products p
where type = 'shirt' and color = 'blue' and size in ('S', 'M', 'L', 'XL')
order by (select sortkey from sizes s where s.size = p.size);

是的,这意味着如果您在orderby中使用子查询,它必须是标量

使用
select*
时,子查询将返回多个列,DBMS将不知道使用这些列中的哪一列进行排序。如果您只选择了一列,您仍然需要确保只选择一行。(区别在于Oracle会立即发现列过多的问题,但只有在获取数据时才会检测到行过多。)

这是允许的:

select * from employees
order by (select birthdate from employees where employee_id = 12345);
这是一个标量查询,因为它只返回一个值(一列,一行)。但当然,这仍然没有原始查询的意义,因为子查询结果独立于主查询,即它为表中的每一行返回相同的值,因此排序无效

最后一句话:
orderby
中的子查询意义不大,因为这意味着您按未显示的内容进行排序。例外情况是在查找sortkey时。例如:

select *
from products p
where type = 'shirt' and color = 'blue' and size in ('S', 'M', 'L', 'XL')
order by (select sortkey from sizes s where s.size = p.size);

谢谢你接受。请看我刚才在orderby中添加了一个合理子查询的示例。再次感谢。如果我正确理解了你的例子,这就是相关子查询。İt证明按顺序排列的子查询也可以关联?我说的对吗?是的,这是一个相关子查询,正如前面提到的,
orderby
中的非相关子查询甚至没有意义,因为它每次返回相同的值,因此它对排序顺序没有任何影响。Thaks接受。请看我刚才在orderby中添加了一个合理子查询的示例。再次感谢。如果我正确理解了你的例子,这就是相关子查询。İt证明按顺序排列的子查询也可以关联?我说的对吗?是的,这是一个相关子查询,正如前面提到的,
orderby
中的非相关子查询甚至没有意义,因为它每次都返回相同的值,因此对排序顺序没有任何影响。