是什么导致这个联合所有功能停止工作?

问题描述 投票:0回答:1
  SELECT distinct RESTAURANT, RANK, 
  (select avg(SCORE) 
  from TRIPADVISOR 
  where rank<=10 and rank>=0) as top10
  FROM TRIPADVISOR 
  ORDER BY RANK LIMIT 10   

  union all

  SELECT distinct RESTAURANT, RANK, 
  (select avg(SCORE) 
  from TRIPADVISOR 
  where rank<=249 and rank>=57) as bottom10
  FROM TRIPADVISOR 
  ORDER BY RANK DESC LIMIT 10 

我想问一个简单的问题。正如您在上面所看到的,我在同一个表中有两个查询,我希望将它们联合起来。我是sql的新手,所以大部分功能和汇总,我都不熟悉。这就是困境。我有一个TRIPADVISOR表,包括餐馆名称,餐厅名称,排名栏,行程顾问排名和分数栏。对于第一个查询,我能够成功获得TripAdvisor排名前10位的平均分数。对于底部,它排在最后10位。我遇到的问题是将这两个平均结果合并到一个查询中。我在一个查询选项卡中有第一个,在另一个查询选项卡中有第二个。我刚刚将第二个查询复制到第一个查询并插入了union all。我正在使用mysqlworkbench。它给我的错误是:union在这个位置无效,期待:EOF:','。任何意见将是有益的。谢谢。

mysql
1个回答
1
投票

如果要使用适用于()中各个查询的ORDER BYLIMIT子句,则需要在UNION中包含查询(请参阅manual):

  (SELECT distinct RESTAURANT, RANK, 
  (select avg(SCORE) 
  from TRIPADVISOR 
  where rank<=10 and rank>=0) as top10
  FROM TRIPADVISOR 
  ORDER BY RANK LIMIT 10)  

  union all

  (SELECT distinct RESTAURANT, RANK, 
  (select avg(SCORE) 
  from TRIPADVISOR 
  where rank<=249 and rank>=57) as bottom10
  FROM TRIPADVISOR 
  ORDER BY RANK DESC LIMIT 10)
© www.soinside.com 2019 - 2024. All rights reserved.