【问题标题】:Except is not working with embedded sql query除了不使用嵌入式 sql 查询
【发布时间】:2016-04-04 21:23:10
【问题描述】:

我遇到了这个问题,这真的让我很烦恼,因为我真的找不到解决方案。我在 SQL Server Management Studio 工作。 在这里,我为每个不同的数据选择不同的数据和另一列值的平均值,如下所示:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
group by standing) as s

现在,这工作正常。当我尝试这样做时,就会出现问题:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
group by standing) as s

EXCEPT 

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
WHERE standing = 'JR'
group by standing) as k

EXCEPT 上方和 EXCEPT 下方的选择可以正常工作,但它们一起不能。该程序告诉我有关以下内容的错误: 解析查询时出错。 [令牌行号=6,令牌行偏移量=1,错误令牌=EXCEPT]

我还尝试了 UNION、INTERSECT 和 MINUS。只有 union 似乎有效,现在我真的不知道这里发生了什么。

我很期待解决方案,也很感兴趣我做错了什么。

【问题讨论】:

  • 您使用的是什么版本的 SQL Server?
  • 我正在使用 Microsoft SQL Server Management Studio 10.50.1600.1

标签: sql select except


【解决方案1】:

您是否要排除具有“JR”地位的记录? 为什么不试试这个:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
where standing <> 'JR'
group by standing) as s

【讨论】:

  • 非常感谢! :) 它完全按照我的意愿工作。但无论如何,你不知道是什么导致了 EXCEPT 的这个问题吗?我只是对此感到好奇。
【解决方案2】:

你能运行这个查询'select @@version'并告诉你得到的信息吗? 我在我的“sql sever 2008”上尝试了一个类似于你的查询,它工作正常。 此外,当您使用 union、intersect 和除非您不需要使用 distinct 时,它不会导致任何问题,但由于它们返回不同的行而不需要。

【讨论】:

  • 不行,会抛出全局变量名无效的错误。无论如何,我使用版本 10.50.1600.1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多