首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何编写MySql select查询where id不在列表中,可以为空

在MySQL中,你可以使用NOT IN关键字来编写SELECT查询,以查找ID不在给定列表中的数据。同时,你也可以通过判断列表是否为空来处理这种情况。

以下是完善且全面的答案:

在MySQL中,可以使用NOT IN关键字来编写SELECT查询,以查找ID不在给定列表中的数据。NOT IN的语法如下:

代码语言:txt
复制
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (值1, 值2, ...);

其中,列名表示你想要查询的列名,表名表示你想要查询的表名,值1、值2等表示一个或多个不在列表中的值。

如果你的列表是空的,即没有任何值,你可以使用一个子查询或使用IS NULL来处理。例如:

方法1:使用子查询

代码语言:txt
复制
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (SELECT 列名 FROM 表名);

方法2:使用IS NULL

代码语言:txt
复制
SELECT 列名 FROM 表名 WHERE 列名 IS NULL;

注意:这两种方法都适用于处理列表为空的情况。

以下是应用场景的示例:

假设你有一个名为"users"的表,其中包含一个名为"id"的列,你想要查询ID不在给定列表(1, 2, 3)中的用户数据。你可以这样编写查询语句:

代码语言:txt
复制
SELECT * FROM users WHERE id NOT IN (1, 2, 3);

如果你的列表是空的,你可以这样处理:

方法1:使用子查询

代码语言:txt
复制
SELECT * FROM users WHERE id NOT IN (SELECT id FROM empty_table);

方法2:使用IS NULL

代码语言:txt
复制
SELECT * FROM users WHERE id IS NULL;

在腾讯云的产品中,推荐使用TencentDB for MySQL来进行MySQL数据库的管理和操作。你可以使用TencentDB for MySQL来创建、配置、备份和监控MySQL数据库,以及执行各种查询和操作。

了解更多关于TencentDB for MySQL的信息,请访问腾讯云官方网站:TencentDB for MySQL产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL数据库学习,详解select条件查询(二)

like(模糊查询) 有个学⽣表,包含(学⽣id,年龄,姓名),当我们需要查询姓“张”的学⽣的时候,如何 查询呢? 此时我们可以使⽤sql的like关键字。...select 列名 from 表名 where 字段 in (值1,值2,值3,值4); in 后⾯括号可以包含多个值,对应记录的字段满⾜in任意⼀个都会被返回 in列表的值类型必须⼀致或兼容 in...列表不⽀持通配符。...select 列名 from 表名 where 字段 not in (值1,值2,值3,值4); 如查询年龄不在10、15、20、30之内的,如下: mysql> select * from test6...对c字段进⾏like '%'查询、in、not查询,c为NULL的记录始终没有查询出来。 between and查询,为的记录也没有查询出来。

1.2K10

一千个不用 Null 的理由

很多人员都以为not null 需要更多空间,其实这不是重点。 重点是很多程序员觉得NULL在开发不用去判断插入数据,写sql语句的时候更方便快捷。 2、是不是以讹传讹?...Mysql难以优化引用查询,它会使索引、索引统计和值更加复杂。列需要更多的存储空间,还需要mysql内部进行特殊处理。...= 等负向条件查询在有 NULL 值的情况下返回永远为结果,查询容易出错 ?...NULL值的情况下返回永远为结果,查询容易出错 select user_name from table_2 where user_name not in (select user_name from...公益:开放一台Nacos服务端 Nacos部署的几个常见问题 永远不要在 MySQL 中使用“utf8” 号外:最近整理了之前编写的一系列内容做成了PDF,关注我并回复相应口令获取: - 001

50210
  • 玩转Mysql系列 - 第7篇:玩转select条件查询,避免采坑

    like(模糊查询) 有个学生表,包含(学生id,年龄,姓名),当我们需要查询姓“张”的学生的时候,如何查询呢? 此时我们可以使用sql的like关键字。...select 列名 from 表名 where 字段 in (值1,值2,值3,值4); in 后面括号可以包含多个值,对应记录的字段满足in任意一个都会被返回 in列表的值类型必须一致或兼容 in...列表不支持通配符。...select 列名 from 表名 where 字段 not in (值1,值2,值3,值4); 如查询年龄不在10、15、20、30之内的,如下: mysql> select * from test6...b、c可以为,插入了3条数据,睁大眼睛看效果了: mysql> select * from test5 where b>0; +---+------+------+ | a | b | c

    1.6K30

    Mysql系列第七讲 玩转select条件查询,避免采坑

    like(模糊查询) 有个学生表,包含(学生id,年龄,姓名),当我们需要查询姓“张”的学生的时候,如何查询呢? 此时我们可以使用sql的like关键字。...select 列名 from 表名 where 字段 in (值1,值2,值3,值4); in 后面括号可以包含多个值,对应记录的字段满足in任意一个都会被返回 in列表的值类型必须一致或兼容 in...列表不支持通配符。...select 列名 from 表名 where 字段 not in (值1,值2,值3,值4); 如查询年龄不在10、15、20、30之内的,如下: mysql> select * from test6...b、c可以为,插入了3条数据,睁大眼睛看效果了: mysql> select * from test5 where b>0; +---+------+------+ | a | b | c

    1.5K30

    一千个不用 Null 的理由

    很多人员都以为not null 需要更多空间,其实这不是重点。 重点是很多程序员觉得NULL在开发不用去判断插入数据,写sql语句的时候更方便快捷。 2、是不是以讹传讹?...Mysql难以优化引用查询,它会使索引、索引统计和值更加复杂。列需要更多的存储空间,还需要mysql内部进行特殊处理。...列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。 —— 出自《高性能mysql第二版》 照此分析,还真不是以讹传讹,这是有理论依据和出处的。...= 等负向条件查询在有 NULL 值的情况下返回永远为结果,查询容易出错 ?...NULL值的情况下返回永远为结果,查询容易出错 select user_name from table_2 where user_name not in (select user_name from

    1.2K60

    一千个不用 Null 的理由

    很多人员都以为not null 需要更多空间,其实这不是重点。 重点是很多程序员觉得NULL在开发不用去判断插入数据,写sql语句的时候更方便快捷。 2、是不是以讹传讹?...Mysql难以优化引用查询,它会使索引、索引统计和值更加复杂。列需要更多的存储空间,还需要mysql内部进行特殊处理。...列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。 —— 出自《高性能mysql第二版》 照此分析,还真不是以讹传讹,这是有理论依据和出处的。...= 等负向条件查询在有 NULL 值的情况下返回永远为结果,查询容易出错 举例: create table table_2 ( `id` INT (11) NOT NULL, user_name...NULL值的情况下返回永远为结果,查询容易出错 select user_name from table_2 where user_name not in (select user_name from

    46230

    mybatisplus+swagger【后端专题】

    在散列表hashCode()相等,即两个键值对的哈希值相等。...系统分配 ID,用于数值型数据(Long,对应 mysql BIGINT 类型) IdType.ASSIGN_UUID 系统分配 UUID,用于字符串型数据(String,对应 mysql varchar...基于上集) 可以封装sql对象,包括where条件,order by排序,select哪些字段等等 查询包装类,可以封装多数查询条件,泛型指定返回的实体类 1 核心API like 模糊匹配 notLike..."); //SELECT id,img,url,weight AS weightAAA FROM banner WHERE (img IS NULL AND url IN (?...select字段查询 简介: 性能优化之指定select字段查询 面试题:select * 和 select 指定字段的区别 网络IO问题 select * 会查出所有的字段,有些是不需要的,当应用程序和服务器不在同一个局域网时

    2.1K30

    MySQL数据库(八):表记录的基本操作(增删改查)

    :数值比较、字符比较、范围内、、非、逻辑比较、模糊、正则表达式 2.例子: 1.1 删除uid字段为null的记录 mysql> select id,uid from usertab where uid...四、查 select:查询记录内容(值) 1.格式 select     字段名列表    from    表名; select     字段名列表    from    数据库名.表名; select...; 查询id=10的记录 mysql> select * from usertab where id = 10; +----+----------+----------+------+------...= 格式: 字段名 “字符串” 比如:name=”root” 例子: 查询username=root的记录 mysql> select * from usertab where...’ 查询名字包含数字的 mysql> select username from usertab where username regexp ‘[0-9]’; +———-+ | username

    5.3K110

    高性能MySQL第六章 读书笔记

    第6章 查询性能优化 查询会慢的原因通常是以为存在着的各种子任务,优化查询实际上是优化子任务。...在mysqlIN和多个OR并不等价,MySQL的IN()列表的数据会先进行排序,然后通过二分查找的方式来确定列表的值是否满足条件。 数据和索引的统计信息可以帮助影响到优化器。...等值传递:如果发现查询中有其它的WHERE,ON或者USING的子句,会将条件复制到应用关联的表,但是万一条件非常长,会导致优化和执行变慢。 mysql5.6并不支持多核特性来并行执行查询。...编写UNION查询,如果找到了就提前返回: SELECT GREATEST(@found := 1, id) AS id ,'uesrs' AS which_tb1 FROM users where id...= 1 UNOIN ALL SELECT id , 'users_archived' FROM users_archived WHERE id = 1 AND @found IS NULL UNOIN

    64020

    MySQL 一千个不用 NULL 的理由

    很多人员都以为not null 需要更多空间,其实这不是重点。 重点是很多程序员觉得NULL在开发不用去判断插入数据,写sql语句的时候更方便快捷。 2、是不是以讹传讹?...Mysql难以优化引用查询,它会使索引、索引统计和值更加复杂。列需要更多的存储空间,还需要mysql内部进行特殊处理。...列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。 —— 出自《高性能mysql第二版》 照此分析,还真不是以讹传讹,这是有理论依据和出处的。...= 等负向条件查询在有 NULL 值的情况下返回永远为结果,查询容易出错 举例: create table table_2 ( `id` INT (11) NOT NULL, user_name...NULL值的情况下返回永远为结果,查询容易出错 select user_name from table_2 where user_name not in (select user_name from

    9410

    java架构之路(三)Mysql之Explain使用详解

    查询不包含子查询和union   2)primary:复杂查询中最外层的 select   3)subquery:包含在 select 的子查询(不在 from 子句中)   4)derived:包含在...MySQL会将结果存放在一个临时表,也称为 派生表(derived的英文含义)   5)union:在 union 的第二个和随后的 select table列: 这一列表示 explain 的一行正在访问哪个表...type列: 这一列表示关联类型或访问类型,即MySQL决定如何查找表的行,查找数据行记录的大概 范围。...在这种情况下,可以通过检查 where 子句看是否 以创造一个适当的索引来提高查询性能,然后用 explain 查看效果。 key列: 这一列显示mysql实际采用哪个索引来优化对该表的访问。...,where条件是一个前导列的范围; Using temporary:mysql需要创建一张临时表来处理查询

    81020

    day61_Mybatis学习笔记_01

    SELECT id id_,username username_,sex sex_ FROM USER WHERE id = 1; 编写Mapper映射文件     <!...注意:用if进行判断是否为时,不仅要判断null,也要判断空字符串""。 where标签:会去掉条件的第一个and符号。...需求:综合查询时,查询条件由用户来输入,用户名称可以为,需要编写满足这种情况下的sql。 编写Mapper映射文件     <!...(1)传递pojo对象的List集合 需求:综合查询时,会根据用户ID集合进行查询,如下: SELECT * FROM USER WHERE id IN (1,2,10) 在包装POJO定义List...>                            编写Mapper接口     // 综合查询:根据用户ID的集合查询用户列表(学习foreach标签之传递

    1.4K30

    mysqlfind_in_set()函数的使用

    现在有篇文章他既是头条,又是热点,还是图文,type以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢??...”分隔 如 (1,2,6,8) 查询字段(strlist)包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist ,则返回值的范围在 1 到 N...mysql可以进行这样的查询SELECT id,name,list from tb_test WHERE 'daodao' IN(list); -- (一) 实际上这样是不行的,这样只有当list...”分隔 如 (1,2,6,8) 查询字段(strlist)包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist ,则返回值的范围在 1 到 N...mysql可以进行这样的查询SELECT id,name,list from tb_test WHERE 'daodao' IN(list); -- (一) 实际上这样是不行的,这样只有当list

    3.6K40

    mysql学习总结04 — SQL数据操作

    '); 4.3 蠕虫复制 从已有数据获取数据并插入到数据表 基本语法:insert into () select */ from ; mysql> insert...查询的运算符 1 - 算术运算符: +、-、*、/、% 通常不在条件中使用,用于结果运算(select),其中:除法运算结果均用浮点数表示,若除数为0结果为NULL,NULL进行任何运算结果均为NULL...当一个查询是另一个查询的条件时,称之为子查询查询和主查询的关系 子查询嵌入到主查询查询辅助主查询,作为条件或数据源 子查询是一条完整的独立存在的select语句 子查询按功能分类 标量子查询...,查询其班级名 通过学生表获取班级id,得到一个数据(一行一列) 通过班级id获取班级名 mysql> select * from tbClass where id = (select class_id...c.id); id Name 1 1班 2 2班 11.6 列子查询特定关键字 in where in (); mysql> select * from

    5.2K30

    MySQL基础(快速复习版)

    3、order by的位置一般放在查询语句的最后(除limit语句之外) 2.4、常见函数 一、概述 功能:类似于java的方法 好处:提高重用性和隐藏实现细节 调用:select 函数名(实参列表)...】 四、SQL99语法 1、内连接 语法: select 查询列表from 表1 别名【inner】 join 表2 别名 on 连接条件where 筛选条件group by 分组列表having 分组后的筛选...②查询姓名,employee_id属于①列表的一个 select last_namefrom employeeswhere employee_id in( select manager_id from...3、union 去重,union all包含重复项 2.10、查询总结 语法: select 查询列表 ⑦from 表1 别名 ①连接类型 join 表2 ②on 连接条件 ③where...unique+not null FOREIGN KEY:外键,该字段的值引用了另外的表的字段 主键和唯一 1、区别: ①、一个表至多有一个主键,但可以有多个唯一 ②、主键不允许为,唯一可以为 2、

    4.5K20

    一个小时学会MySQL数据库

    它的目的是作为 MySQL 源代码的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。 另外,MySQL 的存储引擎接口定义良好。..., 2、根据上面的表结构完成表的创建,表名为emp 3、在表添加5条以上的数据 4、完成下列查询要求 4.1查询所有员工信息 4.2查询所有工资介于2000-5000间的员工姓名、职位与工资 4.3...#2.1、查询所有学生 select id,name,sex,age from stu; #2.2、查询年龄大于80岁女学生 select id,name,sex,age from stu where...需要各select查询的字段数量一样。 每个select查询的字段列表(数量、类型)应一致,因为结果的字段名以第一条select语句为准。...select * from (select * from tb where id>0) as subfrom where id>1; -- where型 - 子查询返回一个值,标量子查询

    3.1K30

    看完这篇文章,99%的人都会使用Mysql Explain工具

    查询不包含子查询和union primary:复杂查询中最外层的 select subquery:包含在 select 的子查询不在 from 子句中) derived:包含在 from 子句中的子查询...MySQL会将结果存放在一个临时表,也称为派生表(derived的英文含义) union:在 union 的第二个和随后的所有select 下面这个例子主要来了解(simple)查询类型 EXPLAIN...具体例子参考,上面第二张图的table列 4.type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表的行,查找数据行记录的大概范围。...关于下图中,给出优化的sql,显示查询的是dual表,这个是mysql的自带的表,像我们上面的sql,mysql会直接将数据解析到,查询返回出去,所以效率才会高 ?...index condition:查询的列不完全被索引覆盖,where条件是一个前导列的范围; Using temporary:mysql需要创建一张临时表来处理查询

    54010
    领券