是什么导致这个union all函数停止工作?

kmpatx3s  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(350)
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名的平均分数。对于倒数第十名的人来说,这是倒数第十名。问题是,我必须在一个查询中合并这两个平均结果。第一个在一个查询选项卡中,第二个在另一个查询选项卡中。我刚刚将第二个查询复制到第一个查询并插入了union all。我正在使用mysqlworkbench。它给我的错误是:union在此位置无效,应为:eof:','。任何建议都会有帮助。谢谢您。

5vf7fwbs

5vf7fwbs1#

您需要将查询包含在 () 如果你想用 ORDER BY 或者 LIMIT 应用于 UNION (参见手册):

(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)

相关问题