如何在SQL中对books表的title和author列按字母排序输出
实现books表中书名与作者列分别按字母排序输出
需求说明
现有一张名为books的表,包含整数类型的id、文本类型的title(书名)、文本类型的author(作者)列。需要将title列与author列的数据分别按字母顺序排序后输出。
建表与插入数据SQL语句
CREATE TABLE books ( id Int, title Varchar, author Varchar ); INSERT INTO books (title, author) VALUES ("爱丽丝梦游仙境", "刘易斯·卡罗尔"); INSERT INTO books (title, author) VALUES ("几何原本", "欧几里得"); INSERT INTO books (title, author) VALUES ("延伸的表现型", "理查德·道金斯"); INSERT INTO books (title, author) VALUES ("自然哲学的数学原理", "艾萨克·牛顿"); INSERT INTO books (title, author) VALUES ("平面国:多维空间传奇故事", "埃德温·艾博特·艾博特"); INSERT INTO books (title, author) VALUES ("皇帝新脑", "罗杰·彭罗斯"); INSERT INTO books (title, author) VALUES ("罗密欧与朱丽叶", "威廉·莎士比亚");
解决方案SQL语句
-- 查询并按字母升序排序所有书名 SELECT title FROM books ORDER BY title ASC UNION ALL -- 查询并按字母升序排序所有作者名 SELECT author FROM books ORDER BY author ASC;
语句说明
- 第一个
SELECT语句提取所有书名,通过ORDER BY title ASC按字母升序排列; - 第二个
SELECT语句提取所有作者名,通过ORDER BY author ASC按字母升序排列; - 使用
UNION ALL将两个结果集合并,确保先输出排序后的书名列表,再输出排序后的作者列表。
预期输出
爱丽丝梦游仙境 几何原本 平面国:多维空间传奇故事 自然哲学的数学原理 罗密欧与朱丽叶 皇帝新脑 延伸的表现型 埃德温·艾博特·艾博特 欧几里得 艾萨克·牛顿 刘易斯·卡罗尔 理查德·道金斯 罗杰·彭罗斯 威廉·莎士比亚
内容的提问来源于stack exchange,提问作者Keshav Khanal
相关产品推荐
相关产品推荐

