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

MySQL SELECT WHERE IN LIST 和 NOT IN LIST 在同一个 SQL 中

MySQL 中可以使用 INNOT IN 运算符来筛选符合要求的记录。IN 运算符用于匹配一个或多个值,而 NOT IN 运算符用于排除一个或多个值。在 IN 运算符中,可以使用 LIST 语法来指定多个值,而在 NOT IN 运算符中,可以使用 NOT LIST 语法来指定多个值。

在同一个 SQL 中,可以使用 WHERE 子句来指定筛选条件。可以使用 IN 运算符来指定多个值,也可以使用 NOT IN 运算符来排除多个值。例如,以下是一个示例 SQL,其中使用了 INNOT IN 运算符:

代码语言:txt
复制
SELECT * FROM customers
WHERE country IN ('USA', 'Canada', 'Mexico')
AND city NOT IN ('New York', 'Los Angeles', 'Chicago')

在这个示例 SQL 中,使用 IN 运算符指定了国家列表,使用 NOT IN 运算符指定了城市排除列表。

需要注意的是,在使用 INNOT IN 运算符时,应该确保列表中的值是固定的,否则可能会出现语法错误或查询失败的情况。此外,在使用 INNOT IN 运算符时,应该尽量避免使用 OR 运算符,因为使用 OR 运算符可能会导致查询性能下降。

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

相关·内容

SQL语句MYSQL的运行过程各个组件的介绍

长连接:当用户一次连接后不断开频繁使用,(长连接)但是会出现MysqL的内存飙升的问题,因为长连接里面的的对象不会去被销毁的会一直积压,只有当断开连接的时候才会进行销毁,所以可以设置默认的值进行断开连接...select SQL_CACHE * FROM T WHERE ID =10; 分析器:对SQL语句进行词法分析,查看是否有语法上的问题,并且将对应的表名进行对应在数据库的表,然后分析器会进行语法分析,...通过词法分析的结果进行语法分析,来判断zheduan语句是否符合MYSQL的语法 如果符合就会通过进行下一步,如果错误则会报错 you hava an erro in your SQL syntax...: 通过InnoDB引擎接口取表的第一行,判断是有where的字段的条件值(如:ID =10)则判断是否符合条件存在就存在结果集中; 继续取下一行,重复判断直到表的最后一行 返回收集的结果集 对于有索引的表...(ROWS_EXAMINED字段 表示这个语句执行过程扫描了多少行,这个值就是执行器每次调用引擎接口获取数据行的时候累加的)

1.9K30
  • MyBatis 从入门到放弃 ( MyBatis基础总结 )

    其它持久化层技术对比 JDBC SQL 夹杂Java代码耦合度高,导致硬编码内伤 维护不易且实际开发需求 SQL 有变化,频繁修改的情况多见...t_user where user_name like concat('%',#{mohu},'%') 若字段名实体类的属性名不一致,但是字段名符合数据库的规则(使用_),实体类的属性...名符合Java的规则(使用驼峰) 此时也可通过以下两种方式处理字段名实体类的属性的映射关系 a>可以通过为字段起别名的方式,保证实体类的属性名保持一致 b>可以MyBatis的核心配置文件设置一个全局配置信息...= null">    and sex = #{sex}    where whereif一般结合使用: a>若where标签的if条件都不满足,则where标签没有任何功能...= null">      and sex = #{sex}         trim trim用于去掉或添加标签的内容 常用属性: prefix:

    92920

    Mybatis学习笔记--

    其它持久化层技术对比 JDBC SQL 夹杂Java代码耦合度高,导致硬编码内伤 维护不易且实际开发需求 SQL 有变化,频繁修改的情况多见 代码冗长,开发效率低 Hibernate ...where user_name like concat('%',#{mohu},'%') 若字段名实体类的属性名不一致,但是字段名符合数据库的规则(使用),实体类的属性 名符合...Java的规则(使用驼峰) 此时也可通过以下两种方式处理字段名实体类的属性的映射关系 a>可以通过为字段起别名的方式,保证实体类的属性名保持一致 b>可以MyBatis的核心配置文件设置一个全局配置信息...= null"> and sex = #{sex} whereif一般结合使用: a>若where标签的if条件都不满足,则where标签没有任何功能...级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存获取 二级缓存开启的条件: a>核心配置文件,设置全局配置属性

    66430

    你好MyBatis 高级篇

    MyBatis缓存 一级缓存 首先了解什么叫缓存,缓存可以看作是一种程序的优化机制,拿查询来说,第一次查询,会访问数据库,查询到结果之后,先将结果保存在内存,然后返回结果;第二次执行相同的sql时,...一级缓存的作用范围 一级缓存的作用范围是同一个session同一个sql相同的参数 当我们执行一个查询语句两次时,我们看日志会是什么情况 @Test public void testQueryBookByAuthorOrName...发现,我们执行了两次查询,但是只执行了一次sql语句,为了证明缓存的存在,我们执行一遍查询之后将缓存清除掉,去查看日志!...例如 :update insert delete等 二级缓存 二级缓存的作用范围是: 一个mapper的namespace ,同一个namespace查询sql可以从缓存命中。...可以看出Sql只执行了一次,由第二个圈着的地方:是计算的缓存命中率,命中率为0.5,执行了两次sql缓存只查了一次,所以它的命中率为0.5,也很直接的证明了二级缓存在起作用。

    33520

    数据库访问框架 - Mybatis

    select> 注意: 创建位置必须持久层接口相同的包; 名称必须以持久层接口名称命名文件名,扩展名是.xml。...语句中的查询返回列必须resultType类型的属性名对应,否则会赋值为null,如果仅大小写不同,仍可以赋值成功,因为mysql windows 系统不区分大小写!..."> where id = #{uid} 动态语句 可以根据条件来判断是否需要拼接sql语句,标签的 test 属性写的是对象的属性名,如果是包装类的对象要使用...拼接sql语句时,有时需要传递一个集合,比如这样的sql语句select 字段 from user where id in (?)...比如在同一个SqlSession下对用户查询2次User user = userDao.findById(41);,只会执行一次sql语句,2次返回的User对象是同一个对象。

    5.4K30

    MyBatis

    MyBatis 支持定制化 SQL、存储过程以及高级映射,可以实体类 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。...,此时where会与and连用,SQL语句会报错 如果加上一个恒成立条件,则SQL语句为select * from t_emp where 1= 1 and age = ? and sex = ?...,此时不报错 2.where whereif一般结合使用 若where标签的if条件都不满足,则where标签没有任何功能,即不会添加where关键字 若where标签的if条件满足,则where...=''"> age = #{age} 3.trim trim用于去掉或添加标签的内容 prefix:trim标签的内容的前面添加某些内容 suffix...:trim标签的内容的后面添加某些内容 prefixOverrides:trim标签的内容的前面去掉某些内容 suffixOverrides:trim标签的内容的后面去掉某些内容 若trim

    1.7K30

    10分钟吃透,python操作mysql数据库的增、删、改、查

    而是进行数据的处理逻辑功能的交互,后端也被称之为服务端。 在后端开发里面数据处理是一个麻烦而又重要的领域,所有程序的功能交互都离不开数据,哪怕是一个变量都是数据。...in data_list: print(row_dict) 写法三(admin表条件查询id>2的数据): sql = "select * from admin where id>2" res...(admin表条件查询id>2的数据"利用execute的第一个参数判断"): sql = "select * from admin where id>%s" res = cursor.execute...利用execute的第一个参数判断"): sql = "select * from admin where id>%s" res = cursor.execute(sql, [2, ]) data_list...# sql = "select * from admin where id>2" # res = cursor.execute(sql) # data_list = cursor.fetchall()

    1K40

    经典笔试题-JDBC及Hibernate篇

    ,是重量级、二级缓存;Session 接口:负责保存、更新、删除、加载查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;Transaction 接口:管理事务;Query...113、关于hibernate: 【基础】 hibernate 配置文件呈标题一对多,多对多的标签是什么;2)Hibernate 的二级缓存是什么;3)Hibernate 是如何处理事务的;...PreparedStatement 被创建时即指定了SQL 语句,通常用于执行多次结构相同的SQL 语句。 119、用你熟悉的语言写一个连接ORACLE 数据库的程序,能够完成修改查询工作。...(); JDBC 的分页:根据不同的数据库采用不同的sql 分页语句 例如: Oracle sql 语句为: “SELECT * FROM (SELECT a.*, rownum r FROM...TB_STUDENT) WHERE r between 2 and 10” 查询从记录号2 到记录号10 之间的所有记录 121、ORACLE 大数据量下的分页解决方法。

    49920

    Mybatis基础

    SQL 映射文件,要求 Mapper 接口与 SQL 映射文件同名同位置,没有 SQL 映射文件,使用注解接口的方法上写 SQL 语句。...数据库 不支持主键自增,例如 Oracle 数据库 获取主键值 若数据库支持自动生成主键的字段(比如 MySQL SQL Server),则可以设置useGeneratedKeys=”true”,...PrepardStratement: 可以使通配符操作 SQL,因为在为 String 赋值时 使用建议:建议使用#{},特殊情况下,需要使用${},例如模糊查询分页查询 参数传递的方式: 当传递参数为单个...2、if where if 用于简单的判断 Where 用于解决 SQL 语句中的 where 关键字以及条件第一个 and 或者 or 的问题。...> 3、trim Trim 可以条件判断完的 SQL 语句前后添加 或者去掉指定的字符 prefix: 添加前缀(操作的 SQL 语句前加入某些内容) prefixOverrides

    1K20

    Mybatis批量操作解析

    我们项目中会有一些批量操作的场景,比如导入文件批量处理数据的情况(批量新增商户、批量修改商户信息),当数据量非常大,比如超过几万条的时候,Java代码循环发送SQL到数据库执行肯定是不现实的,因为这个意味着要跟数据库创建几万次会话...即使同一个连接,也有重复编译执行SQL的开销。...可以看到,动态SQL批量插入效率要比循环发送SQL执行要高得多。 最关键的地方就在于减少了跟数据库交互的次数,并且避免了开启结束事务的时间消耗。...所以Mapper文件里面最关键的就是case whenwhere 的配置。需要注意一下open属性separator属性。 <!...3)BatchExecutor:执行update (没有select,JDBC批处理不支持select),将所有sql都添加到批处理(addBatch()),等待统一执行(executeBatch()

    96720

    Mysql概念--视图

    WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图更新时保证视图的权限范围之内 cascade是默认值,表示更新视图的时候,要满足视图表的相关条件 local...> select * from view_name; 3、有关视图的信息记录在information_schema数据库的views表 mysql> select * from information_schema.views...,可以通过修改视图来保持视图基本表之间一致 3、DML操作更新视图 因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表 mysql> create view v_student as...嵌套视图:定义另一个视图的上面的视图 mysql> create view v_ear_veterans -> as -> select * from v_veterans   -> where...但是,如果同一个用户对于视图所访问的表没有select权限,那会怎么样?

    4.1K20

    mybatis详解(全)「建议收藏」

    sql语句.所谓的动态sql,本质还是sql语句,只是开发者可以sql层面,去执行一个逻辑代码,现在编写一个mapper接口用于测试: List queryUser(Map map); if...sql语句append上separator属性指定的字符,该参数为可选项 index list、Set和数组,index表示当前迭代的位置,map,index代指是元素的key,该参数是可选项。...逆向工程生成的文件XxxExample.java包含一个static 的内部类 Criteria , Criteria中有很多方法,主要是定义SQL 语句where后的查询条件。...内部类Criteria 含义 mybatis逆向工程生成的XxxExample,包含一个static的内部类Criteria,, Criteria的方法是定义SQL 语句where后的查询条件。...dbinfo('sqlca.sqlerrd1') from systables where tabid=1 MySql :相当于selectKey的SQL为:SELECT LAST_INSERT_ID

    2K30

    Java面试之JDBC & Hibernate

    ,是重量级、二级缓存; Session 接口:负责保存、更新、删除、加载查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存; Transaction 接口:管理事务...3、关于hibernate: 【基础】 1)hibernate 配置文件呈标题一对多,多对多的标签是什么;2)Hibernate 的二级缓存是什么;3)Hibernate 是如何处理事务的;...8、Java 访问数据库的步骤?Statement PreparedStatement 之间的区别?...(); JDBC 的分页:根据不同的数据库采用不同的sql 分页语句 例如: Oracle sql 语句为: “SELECT * FROM (SELECT a.*, rownum r FROM...TB_STUDENT) WHERE r between 2 and 10” 查询从记录号2 到记录号10 之间的所有记录 11、ORACLE 大数据量下的分页解决方法。

    33210

    MyBatis快速入门

    Mybatis它把持久层的操作接口名称映射文件也叫做:Mapper,所以:IUserDao IUserMapper是一样的 idea创建目录的时候,它包是不一样的包在创建时:com.itheima.dao...:指定实体类的全限定类名 mybatis基于注解的入门案例: 把IUserDao.xml移除,dao接口的方法上使用@Select注解,并且指定SQL语句,同时需要在SqlMapConfig.xml的...("select * from user") List findAll(); } 明确: 我们实际开发,都是越简便越好,所以都是采用不写dao实现类的方式。...SELECT * FROM USERS WHERE username LIKE '%张%' AND id IN (10,89,16) 这样我们进行范围查询时,就要将一个集合的值,作为参数动态添加进来...由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。 二级缓存的使用步骤: 第一步:让Mybatis框架支持二级缓存(SqlMapConfig.xml配置) <!

    39520
    领券