MySQL关键字—using和on

news2024/9/22 5:36:19

文章目录

  • 1. MySQL关键字—using和on
    • 1.1 using关键字的概念
  • 2. using和on的区别
    • 2.1 USING 子句
    • 2.2 ON 子句
  • 3. 示例对比
    • 3.1 建表:
    • 3.2 准备数据
    • 3.3 结果

1. MySQL关键字—using和on

1.1 using关键字的概念

连接查询时如果是同名字段作为连接条件,using可以代替on出现(比on更好),using是针对同名字段(using(id)===on A.id=B.id),using关键字使用后会自动合并对应字段为一个,using可以同时使用多个字段作为条件。

JavaScript中的=====
双等号(==)只比较值是否相等。它本质上是做类型转换。这意味着在比较数值之前,它将变量的类型转换为相互匹配。三等号(===)不执行类型转换。它将验证被比较的变量是否具有相同的值和相同的类型。

使用 USINGON 子句在 SQL 中进行 JOIN 操作时,它们的主要区别在于指定连接条件的方式,下面是两种方法的对比。

2. using和on的区别

2.1 USING 子句

  • USING 子句用于指定两个表之间具有相同名称和数据类型的列作为连接条件。
  • 它是一种简写形式,适用于两个表在指定列上具有完全相同的列名和数据类型。
  • 语法更简洁,避免了重复列名。

优点

  • 代码更简洁,易于阅读和维护。

缺点

  • 限制性较高,只能用于具有相同名称和数据类型的列。
  • 如果需要连接多个列或列名不匹配,不能使用 USING

2.2 ON 子句

  • ON 子句用于指定两个表之间的连接条件,可以是任意的比较表达式。
  • 它不要求列名相同,只要两个表中的列可以进行比较即可。
  • 可以用于更复杂的连接条件,如连接多个列或使用不同的列名。

优点

  • 灵活性高,可以指定任何比较表达式作为连接条件。
  • 适用于列名不同或需要连接多个列的情况。

缺点

  • 语法可能更复杂,特别是在涉及多个列或列名不匹配时。

3. 示例对比

假设我们有两个表 employeesdepartments,它们都有一个共同的列 department_id

3.1 建表:

-- 创建 employees 表
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    department_id INT
);

-- 创建 departments 表
CREATE TABLE departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(100)
);

3.2 准备数据

-- 向 employees 表插入数据
INSERT INTO employees (employee_id, name, department_id) VALUES
(1, 'Alice', 1),
(2, 'Bob', 2),
(3, 'Charlie', 1),
(4, 'David', 3);

-- 向 departments 表插入数据
INSERT INTO departments (department_id, department_name) VALUES
(1, 'HR'),
(2, 'Marketing'),
(3, 'Engineering');

使用 USINGJOIN 示例:

SELECT e.name, d.department_name
FROM employees e
JOIN departments d USING (department_id);

使用 ONJOIN 示例:

SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

3.3 结果

在这里插入图片描述

在这个例子中,两种方法都能达到相同的结果,但 USING 子句更为简洁。如果 employees 表中的列名是 emp_department_iddepartments 表中的列名是 department_id,那么我们只能使用 ON 子句:

SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.emp_department_id = d.department_id;

总结来说,选择使用 USING 还是 ON 取决于具体的使用场景和需求。如果列名相同且只需要基于单一列进行连接,USING 是一个很好的选择。如果需要更复杂的连接条件或列名不匹配,ON 提供了更大的灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfhub Bypass disable_function(完结)0

LD_PRELOAD url 蚁剑连接 选择插件 点击开始 查看到此文件名编辑连接拼接到url后面重新连接 点击开启终端 在终端执行命令 ls / /readfile ShellShock url CTFHub 环境实例 | 提示信息 蚁剑连接 写入shell.php <?phpeval($_REQUEST[ant]);putenv("PHP_test() { :…

四款AI写作免费工具,让文案工作更轻松

作为一名文案编辑&#xff0c;我算是跟文字打了几年的交道了。最近&#xff0c;AI写作这股风潮真是吹得热火朝天&#xff0c;我也忍不住尝了尝鲜&#xff0c;试了试几款神器。说实话&#xff0c;这体验还挺有意思的&#xff0c;感觉就像是在文字的世界里开了一场高科技的派对。…

Redis:概念、部署、配置、优化

目录 关系型数据库与非关系型数据库 关系型数据库 非关系型数据库 非关系型数据库存在的原因 Redis 概念 优点 Redis部署流程 初步设置 安装 初始化 初始化时指定的参数说明 Redis配置文件 修改监听地址 Redis远程连接 远程连接 测试服务端状态 redis-benchm…

智慧景区系统:科技赋能旅游新体验

随着信息技术的飞速发展&#xff0c;旅游业正经历着前所未有的变革&#xff0c;智慧景区系统作为这一变革的先锋&#xff0c;正以其独特的魅力重塑着游客的旅行方式。智慧景区系统&#xff0c;顾名思义&#xff0c;是运用物联网、大数据、云计算、人工智能等现代信息技术&#…

Git客户端 TortoiseGit下载

1.概述 使用TortoiseGit比直接使用git客户端和命令来实现代码管理更为方便&#xff0c;本文贴出了软件的下载地址和基本配置信息 2.TortoiseGit安装与配置 TortoiseGit是TortoiseSVN的Git版本&#xff0c;是一个在Windows系统下使用的Git版本控制客户端。它提供了图形用户界…

MIT线性代数P5

置换矩阵 置换矩阵是行重新排列的单位矩阵。 置换矩阵用P表示&#xff0c; 性质&#xff1a; n阶置换矩阵共有n!个

37.x86游戏实战-XXX遍历怪物数组

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

0812|TCP和UDP跨主机通信

思维导图 TCP实现跨主机通信 服务器端 #include<myhead.h> #define SER_PORT 6666 //端口号 #define SER_IP "192.168.0.108" //服务器IP int main(int argc, const char *argv[]) {//创建套接字文件int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd -1){pe…

进阶!haproxy高级功能与配置

文章目录 前言基于cookie的会话保持IP透传四层IP透传未开启状态开启透传状态 七层IP透传 自定义错误界面重定向HAProxy 四层负载之数据库HAProxy https 前言 本文主要介绍HAProxy高级配置及使用案例 文章相关连接如下&#xff1a; 如果想深入了解haproxy算法的相关知识&…

基于Python+Django+Vue+Mysql前后端分离的图书管理系统

利用空闲休息时间开始自己写了一套图书管理系统。现将源码开源&#xff0c;项目遇到问题 PythonDjangoVue图书管理系统开发全流程 大家好&#xff0c;我是程序员科科&#xff0c;这是我开源的基于PythonDjangoVue的图书管理系统 希望可以帮助想学前后端分离的同学 项目中遇…

积极创新模式,推动智慧场馆建设

智慧场馆是指基于信息技术应用的场馆建设模式&#xff0c;利用物联网、云计算、大数据分析等技术手段&#xff0c;实现场馆资源的管理优化、运营效率的提升以及用户体验的改善。智慧场馆在我国得到了广泛的政策支持和推动&#xff0c;政府出台了一系列鼓励智慧场馆建设的政策措…

Java SIP Client

采用JAIN SIP API实现一个SIP客户端实现向SIP服务器注册。SIP服务器可以为FreeSWITCH也可以为满足GB28181的SIP平台。话不多说直接看注册流程图&#xff1a; 代码实现&#xff1a; 创建maven工程添加依赖 <dependencies><dependency><groupId>javax.sip</…

Apple Maps现在可在Firefox和Mac版Edge浏览器中使用

Apple Maps最初只能在 Windows 版 Safari、Chrome 浏览器和 Edge 浏览器上运行&#xff0c;现在已在其他浏览器上运行&#xff0c;包括 Mac 版 Firefox 和 Edge。经过十多年的等待&#xff0c;Apple Maps于今年 7 月推出了新版地图应用的测试版&#xff0c;但只能在有限的浏览器…

哈希表 - 三数之和

15. 三数之和 方法一&#xff1a;排序双指针 /*** param {number[]} nums* return {number[][]}*/ var threeSum function(nums) {const res [], len nums.length;// 将数组排序nums.sort((a, b) > a - b)for (let i 0; i < len; i) {let l i 1, r len - 1, iNum…

什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭 &#xff0c;更多大厂常问面试题&#xff0c;可以点击下面的小程序进行阅读哈&#xff01; 目前这个面试刷题小程序刚出&#xff0c;有网页和小程序双端可以使用&#xff01; 回归面试题…

网络初学者必备:100个基础知识全掌握

网络安全学习路线 如果你对网络安全入门感兴趣&#xff0c;那么你需要的话可以点击这里网络安全重磅福利&#xff1a;入门&进阶全套282G学习资源包免费分享&#xff01; 或者扫描下方csdn官方合作二维码获取哦&#xff01; 1 什么是链接? 链接是指两个设备之间的连接。…

OpenCV 基本使用

OpenCV 基本使用 参考教程&#xff1a; GitHub - gaoxiang12/slambook2: edition 2 of the slambook 1. 安装 OpenCV 1.1 下载 OpenCV 参考教程&#xff1a; 无法定位软件包libjasper-dev的解决办法-CSDN博客 视觉slam14讲ch5 opencv安装 ubuntu20.04_libvtk5-dev-CSDN博…

机器学习——聚类算法K-Means

目录 一、初识聚类 1. 认识聚类算法 2. 聚类的流程 3. 簇内误差平方和 Inertia越小模型越好吗&#xff1f; 二、KMeans介绍 1. 重要参数n_clusters 2. 模型评估指标 &#xff08;1&#xff09;真实标签己知的时候 &#xff08;2&#xff09;真实标签未知的时候 三、s…

Tomcat 最大连接数实现原理

spring boot 内置tomcat设置连接数 max-connections: 5 server:port: 9898servlet:context-path: /testtomcat:connection-timeout: 5000max-connections: 5accept-count: 5 ##初始化连接数量connectionLimitLatch protected LimitLatch initializeConnectionLatch() {if (ma…

【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例

近年来&#xff0c;食品安全问题频发&#xff0c;尤其疫情期间&#xff0c;海鲜、冷冻畜牧产品的入口安全成为大众关注焦点&#xff0c;追溯、确保相关产品生产、运输、售卖等环节的信息真实、有效&#xff0c;成为保证食品安全的核心环节。浙江天演维真网络科技股份有限公司基…