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:','。任何意见将是有益的。谢谢。
如果要使用适用于()
中各个查询的ORDER BY
或LIMIT
子句,则需要在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)