MySQL查询in操作 查询结果按in集合顺序显示

MySQL 查询in操作,查询结果按in集合顺序显示的实现代码,需要的朋友可以参考下。

MySQL 查询in操作,查询结果按in集合顺序显示
代码如下:
select * from test where id in(3,1,5) order by find_in_set(id,’3,1,5′);
select * from test where id in(3,1,5) order by substring_index(‘3,1,2’,id,1);

偶尔看到的。。。或许有人会注意过,但我以前真不知道
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);

这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实mysql就有这个方法

sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);

出来的顺序就是指定的顺序了。。。。这个,以前还真的从来没用过,偶尔看到,所以就记录了一下。一是做个笔记,二是希望可以给更多的人看到

MySQL中NOT IN语句对NULL值的处理

mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN (‘CVE-1999-0001’, ‘CVE-1999-0002’);
+————-+
| count(name) |
+————-+
| 17629 |
+————-+
1 row in set (0.02 sec)
mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN (‘CVE-1999-0001’, ‘CVE-1999-0002’, NULL);
+————-+
| count(name) |
+————-+
| 0 |
+————-+
1 row in set (0.01 sec)
当在子查询中出现NULL的时候,结果就一定是0了。查了一下手册,确实有这样的说法。所以最后实际采用了这样的查询:
SELECT COUNT(DISTINCT name)
FROM CVE
WHERE name NOT IN (SELECT cveID FROM cve_sig WHERE cveID IS NOT NULL)
顺便提一下MySQL中正则表达式匹配的简单使用:
SELECT COUNT(alarmID)
FROM Alarm
WHERE (CVE NOT RLIKE ‘^CVE-[0-9]{4}-[0-9]{4}$’ OR CVE IS NULL)
当然,RLIKE也可以写作REGEXP,我个人倾向于使用RLIKE,因为拼写接近LIKE,可以见名知义。

mysql – not in
table:info primary key(id, info_type_id)
id, info_type_id, programme_id, episode_id
3, 4, 382, 100034
3, 8, 382, 100034
4, 8, 382, 100034
6, 8, 382, 100034
7, 8, 382, 100034
8, 8, 382, 100034
9, 8, 382, 100034
10, 8, 382, 100034
11, 8, 382, 100034
12, 8, 382, 100034
13, 8, 382, 100034
100001, 4, 382, 100034
100002, 4, 382, 100034

排除(id=3 && info_type_id=8) and (id=4 && info_type_id=8)這兩條記錄,即找出其它記錄
error: select * from info where episode_id=100034 and id not in(3,4) and info_type_id not in (8);
error result:
id, info_type_id, programme_id, episode_id
100001, 4, 382, 100034
100002, 4, 382, 100034
correct: select * from info where episode_id=100034 and (id3 or info_type_id8) and (id4 or info_type_id8);
correct result:
id, info_type_id, programme_id, episode_id
3, 4, 382, 100034
6, 8, 382, 100034
7, 8, 382, 100034
8, 8, 382, 100034
9, 8, 382, 100034
10, 8, 382, 100034
11, 8, 382, 100034
12, 8, 382, 100034
13, 8, 382, 100034
100001, 4, 382, 100034
100002, 4, 382, 100034
理解:id3 or info_type_id8排除掉id=3 && info_type_id=8這條記錄,當表中主鍵多于一個時,不能簡單地使用key1 NOT IN (……) AND key2 NOT IN (……) ..

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/446447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小红书搜索历史无法清除怎么办
上一篇 2025年11月7日 21:02:45
荣耀X50 GT如何允许应用在后台运行?
下一篇 2025年11月7日 21:02:48

相关推荐

  • mysql中blob和text有什么区别

    区别:1、MySQL中的BLOB用于保存二进制数据,而TEXT用于保存字符数据;2、BLOB列没有字符集,并且排序和比较基于列值字节的数值值,而TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。 本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。 在MyS…

    2026年9月1日
    200
  • 完全掌握MySql之写入Binary Log的流程

    本篇文章给大家带来了关于mysql中写入binary log流程的相关知识,其中包括“sync_binlog”、“binlog_cache_size”和“max_binlog_cache_size”的相关问题,希望对大家有帮助。 Binary Log写入流程 我们首先还是先看看官方文档对sync_b…

    2026年9月1日
    000
  • Express服务器报错“连接丢失:服务器关闭了连接”如何解决?

    express服务器报错:“连接丢失:服务器关闭了连接”的排查与解决 在使用Express.js框架搭建服务器时,可能会遇到“连接丢失:服务器关闭了连接”的错误。此错误通常指示与数据库的连接中断。 下文将提供排查和解决该问题的步骤。 错误信息Error: Connection lost: The s…

    2026年9月1日
    000
  • 怎么查询mysql的存储引擎

    怎么查询mysql的存储引擎怎么查询mysql的存储引擎怎么查询mysql的存储引擎怎么查询mysql的存储引擎

    查询方法:1、打开cmd命令窗口;2、执行“mysql -h localhost -u 用户名 -p”命令登录mysql数据库;3、执行“show variables like ‘%storage_engine%’;”命令来查看存储引擎。 本教程操作环境:windows7系统…

    2026年9月1日 用户投稿
    100
  • 忘记mysql密码了怎么办

    解决方法:1、打开配置文件“my.cnf”,在“[mysqld]”项下添加“skip-grant-tables”语句,重启MySQL服务;2、执行“mysql -u root”命令免密码登录数据库;3、使用update命令重置登录密码即可。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年9月1日
    100
  • mysql怎么查询某个字段的值

    在mysql中,可以使用SELECT语句配合指定字段名来查询某个字段的值,语法“SELECT 字段名 FROM 表名 WHERE子句 LIMIT子句;”。 本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。 在mysql中,可以使用SELECT语句配合指定字段名来查询某个字…

    2026年9月1日
    000
  • linux下怎么停止mysql服务

    linux停止mysql服务的方法:1、在终端中执行“mysqladmin -u root shutdown”命令关闭mysql服务即可;2、在终端中执行“service mysql stop”命令关闭mysql服务即可。 本教程操作环境:linux5.9.8系统、mysql8版本、Dell G3电…

    2026年9月1日
    000
  • 一起分析MySQL的高可用架构技术

    本篇文章中给大家带来了关于mysql中高可用架构技术分析的相关知识,其中主要介绍了mmm的技术分析、mysql主从架构以及cluster的相关问题,希望对大家有帮助。 背景说明 随着信息技术的发展,企业越来越依赖于信息化管理,各业务应用的数据信息,主要存储在数据库中,企业对这些数据访问的连续性要求越…

    2026年9月1日
    000
  • mysql怎么删除主从

    mysql删除主从的方法:1、利用“stop slave;”语句停止slave服务器的主从同步;2、利用“RESET MASTER;”语句重置master服务;3、利用“reset slave;”语句重置slave服务;4、重启数据库即可。 本教程操作环境:windows10系统、mysql8.0.…

    2026年9月1日
    000
  • Spring Boot 项目中如何自定义 MySQL Datetime 类型数据的展示时区?

    Spring Boot 项目中自定义 MySQL Datetime 数据显示时区 在 Spring Boot 应用中,MySQL datetime 类型数据默认使用服务器时区显示。为满足不同用户时区需求,需要自定义显示时区。 解决方案: 本方案通过自定义 Jackson 序列化器实现。 创建自定义 …

    2026年9月1日
    100
  • mysql怎么删除空的数据

    在mysql中,可以利用delete语句配合“NULL”删除空的数据,该语句用于删除表中的数据记录,“NULL”用于表示数据为空,语法为“delete from 表名 where 字段名=’ ‘ OR 字段名 IS NULL;”。 本教程操作环境:windows10系统、my…

    2026年9月1日
    000
  • mysql怎么多行注释

    在mysql中,可以利用“/* */”注释符进行多行注释,“/*”用于注释内容的开头,“*/”用于注释内容的结尾,注释的内容可以跨多行,语法为“/*多行注释*/”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql怎么多行注释 多行注释使用/* *…

    2026年9月1日
    100
  • 解决数据库连接问题:使用minii/db库的实际案例

    可以通过一下地址学习composer:学习地址 最近在开发一个小型应用时,我遇到了一个棘手的问题:需要快速集成一个轻量级的数据库操作库。尝试了多个库后,我发现它们要么功能过多,要么兼容性不佳。最终,我找到了 minii/db,这是一个基于 yii2 的简化版本,完美地解决了我的问题。 minii/d…

    用户投稿 2026年9月1日
    200
  • mysql怎么将值转换数字类型

    转换方法:1、用CAST(),语法“SELECT CAST(‘值’ AS SIGNED);”;2、用CONVERT(),语法“SELECT CONVERT(‘值’,SIGNED);”;3、用“+”运算符,语法“SELECT ‘值&#8217…

    2026年9月1日
    100
  • mysql中having的用法是什么

    在mysql中,having子句用于筛选分组之后的各种数据,通常与“group by”联合使用,该语句弥补了where关键字无法与聚合函数联合使用的不足。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql中having的用法是什么 在 SQL 中增…

    2026年9月1日
    200
  • mysql index关键字的用法是什么

    在mysql中,index关键字可用于创建索引,语法“CREATE INDEX 索引名 ON 表名(列名)”;可用于查看索引,语法“SHOW INDEX FROM 表名”;也可用于修改索引,语法“DROP INDEX 索引名 ON 表名”。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年9月1日
    100
  • mysql中5.6和5.5有什么区别

    mysql中5.6和5.5有什么区别mysql中5.6和5.5有什么区别mysql中5.6和5.5有什么区别mysql中5.6和5.5有什么区别

    区别:1、在5.5版本中主从配置不能省略binlog和POS两个参数,而在5.6版本中这两个参数可以省略;2、在5.5版本中不支持多线程复制,同步复制是单线程、队列的,而在5.6版本中支持多线程复制。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysq…

    2026年9月1日 用户投稿
    200
  • MySQL如何实现实时数据同步_跨机房数据同步方案?

    MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?

    mysql实时数据同步在跨机房场景下的核心方案包括:1. 基于binlog的复制,通过slave节点读取master的binlog实现同步,优点稳定但受网络和负载影响;2. 基于gtid的复制,简化管理但需mysql 5.6+支持;3. mysql group replication,提供高可用但资…

    2026年9月1日 用户投稿
    100
  • mysql中union的用法是什么

    mysql中union的用法是什么mysql中union的用法是什么mysql中union的用法是什么mysql中union的用法是什么

    mysql中,union用于将多个select语句的结果组合到一个结果集中,并删除结果集中的重复数据,语法为“select column,…from table1 union select column,…from table2”。 本教程操作环境:windows10系统、m…

    2026年9月1日 用户投稿
    200
  • mysql与db2的区别是什么

    mysql与db2的区别:1、mysql可以对最小单元的对象批量进行授权,而db2不可以对最小单元的对象批量进行授权;2、mysql支持在恢复时打开数据库,而db2不支持在恢复时打开数据库。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql与db2…

    2026年9月1日
    200

发表回复

登录后才能评论
关注微信