SQL Server 错误:当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式
Posted
技术标签:
【中文标题】SQL Server 错误:当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式【英文标题】:SQL Server error :only one expression can be specified in the select list when the subquery is not introduced with EXISTS 【发布时间】:2018-11-29 22:53:37 【问题描述】:declare @mode int
select
@mode = (select top 1 order_dow, count(*)
from orders_denorm
group by order_dow
order by 2 desc)
我正在尝试使用 SQL Server 查找 order_dow
列的模式。我收到以下错误消息:
当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
但是,只有不使用select @mode
的查询才能正常工作。
【问题讨论】:
您似乎错过了消息的在选择列表中部分。如何同时将order_dow
和count(*)
分配给@mode
?
【参考方案1】:
你想要 模式 所以你只想要一列:
select @mode = (select top 1 order_dow from orders_denorm group by order_dow order by count(*) desc);
也许你想要两个:
select @mode = order_dow, @mode_cnt = cnt
from (select top 1 order_dow, count(*) as cnt
from orders_denorm
group by order_dow
order by count(*) desc
);
【讨论】:
以上是关于SQL Server 错误:当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式的主要内容,如果未能解决你的问题,请参考以下文章
SQL 中删除语法的问题 - 当子查询没有与 EXISTS 一起引入时,错误只能在选择列表中指定一个表达式
SQL Server 子查询返回超过 1 个值。子查询遵循 =, !=, <, <= , >, >=