当前位置: 首页 > news >正文

sql题目练习——多表查询

题目:
现有 orders 表,字段有 order_id(订单编号,主键),customer_id(客户编号),order_date(订单日期);以及 customers 表,字段有 customer_id(客户编号,主键),customer_name(客户姓名),city(客户所在城市)。编写 SQL 查询所有来自 “Beijing” 城市的客户的订单编号、订单日期和客户姓名。

select o.order_id,o.order_date,c.customer_name
from orders o,customers c
where c.customer_id=o.customer_id AND c.city='Beijing'

追问:
1.orders 表还有 total_amount(订单总金额)字段,现在要查询来自 “Shanghai” 城市且订单总金额大于 1000的订单编号、订单日期、客户姓名和订单总金额,SQL 如何实现?
2. 怎么修改这条 SQL(用 JOIN 写法)
追答:
select o.order_id,o.order_date,c.customer_name,o.total_amount
from orders o,customers c
where c.customer_id=o.customer_id AND c.city=‘Shanghai’ AND o.total_amount>1000
改为 join写法为:
select o.order_id,o.order_date,c.customer_name,o.total_amount
from orders o
join customers c ON c.customer_id=o.customer_id
where c.city=‘Shanghai’ AND o.total_amount>1000
相关知识点
JOIN 关键字用于在SQL查询中结合两个或多个表的数据,基于这些表之间的相关列。常见的 JOIN 类型包括 INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOIN。以下是对它们的详细解释:

1. INNER JOIN
  • 含义INNER JOIN 返回两个表中连接条件相匹配的行。只有当连接条件满足时,才会在结果集中包含相应的行。这是最常用的 JOIN 类型,如果不指定 JOIN 类型,默认就是 INNER JOIN
  • 语法示例
SELECT column1, column2
FROM table1
INNER JOIN table2 ON table1.common_column = table2.common_column;
  • 示例说明:假设 table1orders 表,table2customers 表,common_columncustomer_id。只有当 orders 表中的 customer_idcustomers 表中的 customer_id 匹配时,相应的订单和客户信息才会出现在结果集中。
2. LEFT JOIN(也称为 LEFT OUTER JOIN
  • 含义LEFT JOIN 返回左表(JOIN 关键字左边的表)中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则结果集中对应右表的列值为 NULL
  • 语法示例
SELECT column1, column2
FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column;
  • 示例说明:继续以 orderscustomers 表为例,使用 LEFT JOIN 时,orders 表中的所有订单记录都会出现在结果集中。对于每个订单,如果在 customers 表中有匹配的客户记录,则显示客户信息;否则,客户相关列显示为 NULL。这在需要查看所有订单,包括那些可能还没有关联客户的订单时很有用。
3. RIGHT JOIN(也称为 RIGHT OUTER JOIN
  • 含义RIGHT JOINLEFT JOIN 相反,它返回右表(JOIN 关键字右边的表)中的所有行,以及左表中满足连接条件的行。如果左表中没有匹配的行,则结果集中对应左表的列值为 NULL
  • 语法示例
SELECT column1, column2
FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;
  • 示例说明:以相同的 orderscustomers 表为例,使用 RIGHT JOIN 会确保 customers 表中的所有客户记录都出现在结果集中。对于每个客户,如果有相关订单,则显示订单信息;否则,订单相关列显示为 NULL
4. FULL OUTER JOIN
  • 含义FULL OUTER JOIN 返回左表和右表中的所有行。当某行在另一表中没有匹配项时,结果集中对应另一表的列值为 NULL。它实际上是 LEFT JOINRIGHT JOIN 的并集。
  • 语法示例
SELECT column1, column2
FROM table1
FULL OUTER JOIN table2 ON table1.common_column = table2.common_column;
  • 示例说明:对于 orderscustomers 表,FULL OUTER JOIN 会包含所有订单和所有客户的信息。如果某个订单没有关联客户,客户相关列是 NULL;如果某个客户没有订单,订单相关列是 NULL。不过,并非所有数据库都直接支持 FULL OUTER JOIN 关键字,在不支持的数据库中,可能需要通过 LEFT JOINRIGHT JOIN 的组合来实现类似效果。
http://www.dtcms.com/a/461683.html

相关文章:

  • c 做网站加载多个图片网站开发实战第二章
  • 精通C语言(3. 自定义类型:联合体和枚举)
  • 认知事物的三个层次
  • 做数学题目在哪个网站好设计好的装修公司
  • 09.Linux环境变量
  • 11、规划过程组(4):风险
  • HT8698 立体声 D 类音频功率放大器:性能参数介绍
  • 做亚克力在那个网站上好上海建工一建集团有限公司
  • DOM与BOM核心用法解析
  • 如何在网站上做跳转代码最好的科技资讯网站
  • 【项目】自然语言处理——情感分析 <下>
  • 网站页面制作公司外部网站 同意加载
  • 高通平台WiFi学习--IPv6 邻居发现卸载:Wi-Fi 固件助力移动设备功耗优化
  • 网站备案 工信部如何做建材团购网站
  • 知名的咨询行业网站制作茂名网站开发
  • 网络管理部分
  • 小白逆袭----2025了,彻底弄懂react-test单元测试 基础使用(一)
  • 代做标书网站政务网站建设模块
  • (2)100天python从入门到拿捏
  • 我的云函数向 unicloud 数据库存储数据问什么 grade 字段无法存储?
  • 免费下载代码的网站做网站国外网站
  • npm install --legacy-peer-deps:它到底做了什么,什么时候该用?
  • [Tongyi] 工具集成 | run_react_infer
  • 做课题查新网站茶叶网站开发目的和意义
  • 第5章 高效的多线程日志
  • 平安建设 十户长网站地址织梦网站制作教程
  • 无人机图传系统解析:模拟与数字的应用及未来趋势,无人机图传的作用
  • Agentic AI 与 AI 编程入门:让 AI 成为学习与创作的最佳伴侣
  • CF45C Dancing Lessons 题解
  • Docker 容器 -- 编写你的第一个 Dockerfile