sql学习笔记(二)

embedded/2025/3/4 21:45:15/

在 SQL 中,'using' 和 'on' 是用于连接(join)操作的关键字,它们都用于指定连接条件,但它们在语法和使用场景上有一些区别。以下是它们的详细对比:

一. on关键字

定义

'on'是最常用的连接条件关键字,用于显示指定连接的字段。

语法

sql">select * 
from table1
join table2
on table1.column = table2.column;

特点

  • 'on'后面直接指定连接条件,可以明确地写出两个表的字段名。
  • 支持复杂的连接条件,可以包含多个字段的比较、逻辑运算符(如'and','or')等。
  • 适用于所有类型的连接('inner  join'、'left  join'、'right  join'、'full  join')。
  • 可以连接不同表中的同名字段或不同名字段。

示例

sql">select orders.order_id, customers.customer_namefrom ordersjoin customerson orders.customer_id = customers.customer_id;

二. using关键字

定义

'using'是一种简化的连接条件关键字,用于连接两个表中国同名的字段。

语法

sql">select *from table1join table2using (column);

特点

  • 'using'后面只能指定一个字段,且该字段必须在两个表中具有相同的名称。
  • 语法更简洁,但限制较多。
  • 只能用于连接同名字段,不能用于连接不同名字段。
  • 在查询结果中,该字段只会显示一次。
  • 同样适用于所有类型的连接('inner  join'、'left  join'、'right  join'、'full  join')。

示例

sql">select order_id, customer_namefrom ordersjoin customersusing (customer_id);

三. 区别

特性onusing
适用场景适用于连接任意字段(无论字段是否同名)只适用于连接同名字段
语法复杂度更灵活,可以指定复杂条件更简洁,但限制较多
查询结果如果连接字段在两个表中同名,结果中会显示两次连接字段在结果中只显示一次
字段引用需要显示指定表名和字段名可以省略表名,直接引用字段名
复杂性支持多字段连接和复杂逻辑只支持单字段连接,且字段必须同名

四. 总结

  • 如果你需要连接两个表中同名的字段,并且希望结果中只显示一次该字段,使用'using'更简洁。
  • 如果你需要连接不同名的字段,或者需要更复杂的连接条件,使用'on'。
  • 'on'是更通用的选择,而'using'是一种简化的语法,适用于特定场景。

http://www.ppmy.cn/embedded/170013.html

相关文章

IP属地是通过卫星定位的吗?如何保护用户隐私

在数字时代,网络空间成为了人们日常生活不可或缺的一部分。随着社交媒体、在线服务等平台的兴起,用户IP属地信息的重要性日益凸显。然而,关于IP属地是如何确定的,尤其是是否通过卫星定位这一问题,却常常引发公众的疑问…

GCC RISCV 后端 -- GCC 构建系统简介

前文提过&#xff0c;GNU 的项目一般都是使用 GNU Autotools 来实现它们的构建系统&#xff0c;其主要目的是通过 GNU Autotools 对不同平台&#xff08;Target Triple: <CPU ARCH>-<Vendor>-<OS>-<ABI>&#xff09;进行抽象&#xff0c;使得GNU Autot…

构建私有化AI知识库:基于CentOS的Ollama + DeepSeek-R1 +ragflow 整合部署教程

操作系统&#xff1a;CentOS 7.9 CPU&#xff1a;支持 AVX 指令集的 x86_64 处理器 内存&#xff1a;64GB 存储&#xff1a;SSD 1TB 以上 GPU&#xff08;可选&#xff09; 一、组件介绍 Ollama Ollama 是一个专为在本地机器上部署和运行大型语言模型&#xff08;LLM&a…

Unity3D Cinemachine 高级应用详解

引言 Cinemachine 是 Unity3D 中一个强大的相机管理系统&#xff0c;它允许开发者通过简单的配置实现复杂的相机行为。Cinemachine 的核心思想是基于虚拟相机&#xff08;Virtual Camera&#xff09;&#xff0c;通过虚拟相机的优先级、混合、跟随、注视等设置&#xff0c;实现…

ADC采集模块与MCU内置ADC性能对比

2.5V基准电压源&#xff1a; 1. 精度更高&#xff0c;误差更小 ADR03B 具有 0.1% 或更小的初始精度&#xff0c;而 电阻分压方式的误差主要来自电阻的容差&#xff08;通常 1% 或 0.5%&#xff09;。长期稳定性更好&#xff0c;分压电阻容易受到温度、老化的影响&#xff0c;长…

CyberRT(apollo) 定时器模块简述及bug分析

timer 模块 timer的定义&#xff0c;cyberrt中timer模块用于设置定时器任务&#xff0c;字面意思&#xff0c;设置设置定时周期及出发频次&#xff08;周期 or oneshot)&#xff0c;到达指定时间时间触发callback time wheel 时钟节拍轮&#xff0c;常见的定时器设计&#x…

机器学习基础概念详解:从入门到应用

在机器学习领域&#xff0c;掌握基础概念是理解复杂模型和应用场景的关键。本文将以简洁的方式介绍机器学习的核心概念&#xff0c;帮助读者快速构建知识框架。 一、数据集的划分&#xff1a;训练集、验证集与测试集 1. 训练集&#xff08;Training Set&#xff09; 用途&…

扫描纸质文件转pdf---少页数+手机+电脑协作

针对手机上扫描软件扫描文件转pdf要收费的问题&#xff0c;提供一种在页数较少时的免费替代方案 。 实现方法&#xff1a;手机软件的免费功能将文件扫描并保存为图片电脑端在word中将图片拼成文档word转pdf 1.借助于“扫描全能王”APP可以免费扫描文件为图片的功能&#xff0…