首页 > 数据库 >MYSQL in和exists

MYSQL in和exists

时间:2024-06-16 19:56:59浏览次数:24  
标签:exists 查询 MYSQL table where id select

目录

一、in

二、exists

三、区别


一、in

解释:in 进行子查询时,内层语句仅返回一个数据列,数据列的值提供给外层语句进行比较操作。

语法格式:select * from table_1 where id in (select id from table_2 );

中文注释:select * from 表名 where 字段 in (子查询/结果集);

用法:

select * from table_1 where id in (select id from table_2 where name = '张三');

二、exists

解释:exists的右操作数是一个子查询,这个子查询是用来做存在性检查的,若子查询的行存在结果,即子查询能够找到匹配的记录,exists的结果为ture,否则为false。
使用EXISTS时,若子查询有结果,则返回true,外表能够提取查询数据。
使用NOT EXISTS时,若子查询找不到匹配记录,则返回true,外表能够提取查询数据。

语法格式:select * from table_1 where  exists (select 1 from table_2 where  table_1.id=table_2.id);

中文注释:select * from 表名 where  exists (子查询条件筛选);

用法:

select * from table_1 where  exists (select 1 from table_2 where  table_1.id=table_2.id)

三、区别

1、 IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况;内外表一样,用那个都行。

2、使用IN时,IN不对NULL进行处理,exists会对NULL进行处理。

3、in可以走索引,但数据量过大就不走索引,not in、exist、not exists也都可以走索引,但数据库版本不同也会有区别,最好是测试一下

4、exists,not exists一般是与子查询使用;in,not in可以与子查询使用,也可以直接in ('a','b',......,'结果集')。

标签:exists,查询,MYSQL,table,where,id,select
From: https://blog.csdn.net/weixin_68547003/article/details/139724678

相关文章

  • MySql 常用面试题 (一)
    MySQL面试题及答案整理1.MySQL中有哪几种锁?MySQL中有多种锁类型,它们可以根据不同的分类标准进行划分。以下是一些主要的锁类型:按粒度分:表锁:每次操作锁住整张表。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。常用于整表数据迁移的场景。行锁:对......
  • 【6】MySQL数据库
    MySQL关系型数据库什么是数据库?数据库是存放数据的电子仓库。以某种方式存储百万条,上亿条数据,供多个用户访问共享。数据库分为关系型数据库和非关系数据库【1】关系型数据库:1)定义:依据关系模型创建的数据库,把数据保存在不同的表中,表与表存在着某些关系。2)举例:mysql(甲骨文公司......
  • MYSQL基础版总结思维导图
    1.为什么char比varchar性能好存储空间利用率:CHAR类型由于是固定长度,因此在存储时不会像VARCHAR那样需要额外的空间来存储字符串的长度信息。这意味着CHAR在存储上可以更加紧凑,减少了存储空间的碎片化,从而在读取数据时可能会更快。数据对齐:由于CHAR是固定长度的,数据库系统......
  • 在Linux中,新安装mysql后怎样提升mysql的安全级别?
    在Linux环境中,新安装MySQL后提高其安全级别的步骤通常包括以下几个关键方面:更改默认root密码:安装MySQL后,第一时间更改默认的root用户密码。可以使用以下命令登录MySQL并更改密码:mysql-urootALTERUSER'root'@'localhost'IDENTIFIEDBY'your_strong_password';确保yo......
  • Linux下部署MySQL5.7.35
    1.MySQL下载(1)登录到以下网站 https://downloads.mysql.com/archives/community/(2)选择需要的版本,以及操作系统,这里是RedHatEnterpriseLinux/OracleLinux5.7.35版本。(3)Mysql安装需要5个rpm包,如下图    mysql-community-common-5.7.35-1.el7.x86_64.rpm......
  • MySQL 乐观锁
    MySQL乐观锁乐观锁认为当前的情况是最好的情况,即每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据droptableifexistssupply_address;--创建表CREATETABLEifnotexists`supply_address`(`id`int......
  • 《软件性能测试分析与调优实践之路》第二版-手稿节选-Mysql数据库性能定位与分析
    在做MySQL数据的性能定位前,需要先知道MySQL查询时数据库内部的执行过程。只有弄清SQL的执行过程,才能对执行过程中的每一步的性能做定位分析。如图6-2-1所示。图6-2-1从图中可以看到,当查询出数据以后,会将数据先返回给执行器,此时执行器先将结果写到查询缓存里面,这样在下次查询相......
  • 1832javaERP管理系统之车间计划管理Myeclipse开发mysql数据库servlet结构java编程计算
    一、源码特点 javaerp管理系统之车间计划管理是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了serlvet设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。......
  • Mysql
    数据库原理与应用DDL和DML练习创建一个名为students的表,包含id(主键,自增长),name(字符串类型,长度为````````20),age(整数类型)和class(字符串类型,长度为20)。CREATETABLEstudents(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(20),ageINT,classVARCHAR(20));向s......
  • mysql中社区版如何查看进程中sql
    在MySQL中,你可以使用SHOWPROCESSLIST命令来查看当前正在运行的进程以及它们正在执行的SQL语句(如果有的话)。不过,默认情况下,SHOWPROCESSLIST可能不会显示完整的SQL语句,特别是当SQL语句非常长时。以下是如何在MySQL中查看进程及其SQL语句的方法:登录到MySQL:使用命令行客户端或......