首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用UNION连接两个工作的SQL查询

无法使用UNION连接两个工作的SQL查询
EN

Stack Overflow用户
提问于 2022-06-13 06:19:13
回答 1查看 29关注 0票数 0

我不知道为什么会有错误。也许是因为NULL?这两个查询都单独工作,但在联合时失败:

代码语言:javascript
复制
select A.id,A.Name, B.Grade from Students A, Grades B 
where A.Marks>=B.min_mark and A.marks<=B.max_mark and B.grade>=8 
order by B.grade desc,A.name
union
select A.id,null, B.Grade from Students A, Grades B 
where A.Marks>=B.min_mark and A.marks<=B.max_mark and B.grade<8 
order by B.grade asc,A.name

错误1064 (42000)在第1行:您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得使用接近“union”的正确语法。

最初的指定是

Ketty给了Eve一个任务来生成一个包含三个列的报告:名称、等级和标记。凯蒂不想知道那些成绩低于8年级的学生的名字。报告必须按等级递减--即先输入更高的分数。如果有一个以上的学生有相同的年级(8-10)分配给他们,按字母顺序排序这些特定的学生。最后,如果分数低于8,使用"NULL“作为它们的名称,并按其等级降序列出它们。如果有一个以上的学生有相同的年级(1-7)分配给他们,按他们的分数按升序排序。

除了union,还有别的办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-13 06:33:27

正如MySQL手册中所述,在使用union语句中使用ORDER和place子句时,要对单个SELECT应用ORDER或place子句,将SELECT插入括号并将该子句放在括号内。试试这个:

代码语言:javascript
复制
(select A.id,A.Name, B.Grade from Students A, Grades B where A.Marks>=B.min_mark and A.marks<=B.max_mark and B.grade>=8 order by B.grade desc,A.name)
union
(select A.id,null, B.Grade from Students A, Grades B where A.Marks>=B.min_mark and A.marks<=B.max_mark and B.grade<8 order by B.grade asc,A.name);

此外,只有联合中的最后一个查询的顺序生效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72598464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档