我想解决我的 SQL 查询问题包括 UNION ALL 和 ORDER BY

问题描述 投票:0回答:1

我写了这个 SQL 查询,但它没有返回任何结果,即使 union all 和 front 后面的第一条语句分开工作,它也会抛出错误。我认为问题在于 order by 和 union 一起工作。

一起使用有什么问题?为什么 SQL 不允许呢?还有,怎么处理?

我试过了,但它给出了以下错误。

SELECT 
    CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')')
FROM
    OCCUPATIONS
ORDER BY 
    NAME ASC
UNION ALL
SELECT 
    CONCAT('There are a total of ', COUNT(OCCUPATION), ' ', LOWER(OCCUPATION), 's.')
FROM
    OCCUPATIONS
GROUP BY 
    OCCUPATION
ORDER BY 
    COUNT(OCCUPATION) ASC, OCCUPATION ASC

ERROR 1064 (42000) 在第 4 行:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“UNION ALL”附近使用的正确语法 SELECT CONCAT('第4行共有',COUNT(OCCUPATION),'',LOWER(O'

mysql sql sql-order-by union-all
1个回答
0
投票

https://dev.mysql.com/doc/refman/8.0/en/set-operations.html#set-operations-order-by-limit

要将 ORDER BY 或 LIMIT 子句应用于用作并集、交集或其他集合操作的一部分的单个查询块,请将查询块括起来,将子句放在括号内,如下所示:

(SELECT a FROM t1 WHERE a=10 AND b=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND b=2 ORDER BY a LIMIT 10);
© www.soinside.com 2019 - 2024. All rights reserved.