SQL 查询结果排序+查询多个表

前言

本文章是SQL Cookbook中文版 (莫利纳罗 著) 的读书笔记,本文章将书中提及到的知识用代码整合在一起并进行分析。

指定顺序返回查询结果

select 姓名,学校,数学
from grade
order by 学校 asc

注意最后一行,最后一行order by定义了查询结果的顺序,其中学校 asc指的是学校升序返回结果,同样的,desc 表示的是降序返回结果

多种顺序返回结果

select 姓名,成绩,性别
from student
order by 性别,成绩 desc

我们可以输入多种列,查询结果将会以优先级从前到后进行排序,就像这样:
数据库是由python随机生成的,没有任何真实个人信息

处理排序空值

有时候我们会遇到数据值为空(NULL)的情况,这个时候我们就需要对这些空值进行处理来解决空值所带来的查询结果影响。
在这里插入图片描述
这里通过为空值新增一列并进行标记、排序,将空值的显示变得可控。

根据数据项的键来排序

这里很好理解,就是具体问题具体分析。
在这里插入图片描述

case的使用总结

使用case语句,类似于switch-case语句,case=switch,when=case呈现出这种对应关系。
当条件符合的时候,程序执行then之后的语句
当条件均不符合的时候,程序执行else之后的语句
在条件结束的时候,记得在尾部加上end来注明结束判断

操作多个表

union

union可以把不同表的数据联合起来:
不使用union时:
在这里插入图片描述
使用union时:
在这里插入图片描述

union 和 union all的区别

union all不会筛选掉重复的项目,仅进行简单的拼合
而union则会筛选掉重复的项目
二者的区别就像是列表和集合的关系
使用union(上下的查询结果一致)的效果
使用union all 的效果

两个表之间的查找

sql外连接方法

链接: 175. 组合两个表
外连接包含三个方向:

左外连接,left (outer) join
结果表中除了匹配行外,还包括左表有而右表中不匹配的行,对于这样的行,右表选择列置为null。
右外连接,right (outer) join
结果表中除了匹配行外,还包括右表有而左表中不匹配的行,对于这样的行,左表选择列置为null。
全连接, full (outer) join
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

作者:m08082309
链接:https://leetcode.cn/problems/combine-two-tables/solutions/389185/sql-lian-jie-liang-ge-biao-by-m08082309-w/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单来说,外连接就是将一个表(左或右)定为主表,查询结果保留主表,并将没有查询结果的值赋值为NULL

代码示例

链接:183. 从不订购的客户

/* Write your T-SQL query statement below */
select  c.name as 'Customers'
from Customers c left join Orders o
    on (c.id=o.customerId)
where o.customerId is null

sql内连接

内连接,(inner) join。意思上就是将两个表进行行比对,并返回两个表的交集(行相等)

交叉连接

和离散数学中的笛卡尔积原理相同,这里不再演示

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL查询中,可以使用以下参数来对查询反馈结果进行排序: 1. ORDER BY:使用ORDER BY子句可以按照指定的列对结果进行排序。例如,使用SELECT column_name FROM table_name ORDER BY column_name可以按照指定列的升序进行排序。还可以使用DESC关键字来进行降序排序,例如SELECT column_name FROM table_name ORDER BY column_name DESC。 2. ASC和DESC:ASC示升序排序(默认),DESC示降序排序。可以在ORDER BY子句中使用ASC或DESC关键字来指定排序的方式。 3. NULLS FIRST和NULLS LAST:当排序列中存在NULL值时,可以使用NULLS FIRST或NULLS LAST关键字来指定NULL值在排序结果中的排列位置。NULLS FIRST示将NULL值排在前面,NULLS LAST示将NULL值排在后面。 4. 多列排序:可以按照多个列进行排序,以便在第一列相同时通过第二列进行排序,以此类推。例如,使用SELECT column1, column2 FROM table_name ORDER BY column1, column2可以按照column1进行排序,当column1相同时再按照column2进行排序。 5. 使用达式排序:除了直接使用列名进行排序,还可以使用达式对结果进行排序。例如,使用SELECT column_name FROM table_name ORDER BY LOWER(column_name)可以按照列名的小写形式进行排序。 这些参数可以根据具体的排序需求和数据模型的设计选择使用。通过指定合适的排序参数,可以按照特定的排序规则对查询结果进行排序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值