in操作排序

先说解决方案:

select * from test where id in(3,1,5) order by field(id,3,1,5);

或许有人会注意过,但我以前真不知道

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 (id<>3 or info_type_id<>8) and (id<>4 or info_type_id<>8);

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

理解:id<>3 or info_type_id<>8排除掉id=3 && info_type_id=8这条记录,当表中主键多于一个时,不能简单地使用key1 NOT IN (……) AND key2 NOT IN (……)

mysql in操作_MySQL查询in操作排序相关推荐

  1. mysql 字段操作_Mysql:数据库操作、数据表操作、字段操作整理

    mysql 登录本机 mysql -u root -p password 数据库操作 创建数据库 命令:create database 例如:mysql> create database xhk ...

  2. mysql 缓存优缺点_MySQL查询缓存的优缺点

    任职DBA一年多了,更正下博客. 其实MySQL8.0已经取消了查询缓存.如果是小型项目,又不想用Reids或者MC等缓存,查询结果相对固定,可以在MySQL5.7以下版本设置缓存. ######## ...

  3. 在mysql中通配符_mysql查询中通配符的使用

    mysql查询中通配符的使用 在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: "_& ...

  4. mysql 严格区分大小写_Mysql查询英文如何严格区分大小写?

    1. 前提: 在Mysql数据库中进行查询时,希望英文严格区分大小写.默认情况下是不区分大小写的. 2. 演示如下: 在数据库表emp中,job字段中存储的值有'Engineer',现在的情况是,下面 ...

  5. mysql单表操作_mysql单表操作

    mysql记录操作 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DEL ...

  6. 数据库mysql常用操作_mysql数据库常用操作

    目前最流行的数据库: oracle.mysql.sqlserver.db2.sqline --:单行注释 #:也是单行注释 /* 注释内容*/:多行注释 mysql -uroot -p密码:登录mys ...

  7. mysql数据库进阶_MYSQL数据库进阶操作

    一,基础强化 where语句的作用: 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中. 1,as关键字 在使用SQL语句显示结果的时候,往往在屏幕显示的字段名并不具备良好的可读 ...

  8. mysql 插入删除操作_MySQL——增删改操作

    插入语句 一次插入操作只插入一行数据 insert into [tablename](listname1,listname2,......) values (value1,value2,......) ...

  9. mysql密码高级_MySQL数据库高级操作(图文详解)

    数据表高级操作 准备工作:安装MySQL数据库 create database CLASS; use CLASS; create table TEST (id int not null,name ch ...

最新文章

  1. JUC之CountDownLatch的源码和使用场景分析
  2. Python Tricks 若干
  3. react native与webview通信跳转页面报错:Cannot read property 'setNativeProps' of undefiend
  4. Flex与.NET互操作(九):FluorineFx.NET的认证(Authentication )与授权(Authorization)
  5. the c programming language_C.I. 直接黄4(C.I. 24890)生产工艺。 CAS号 [3051114]
  6. 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件
  7. 图解TCPIP-传输层 TCP
  8. web项目使用配置web.xml实现重定向
  9. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
  10. 计算机画布模式,商业模式画布基础知识
  11. 《数据结构题集》习题解析
  12. VUE页面中加载外部HTML
  13. 【LTspice】【LTspice添加第三方***.lib文件】
  14. pytorch_LSTM:参数
  15. 生活小剧场30天吸粉44w,小红书最受欢迎的笔记长这样
  16. 论文阅读笔记:Retinal blood vessel segmentation using fully convolutional network with transfer learning
  17. Rocket之环境搭建
  18. 体育短视频纷纷起义,体育直播走向沉沦?
  19. 赖信仁-EA和UML团队开发技巧-UMLChina讲座-音频和幻灯
  20. Jupyter notebook 创建新笔记本出错

热门文章

  1. mysql的分区技术
  2. 前端开发-Weex初试
  3. 线程安全的atomic wrapper classes例子
  4. shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法
  5. 7.PL_SQL——在PL_SQL程序中内嵌查询语句、DML语句、事物处理语句和游标属性
  6. php tp5 model 文件,tp5model的新增
  7. 自定义beans.xml文件实现Spring框架
  8. 小网站服务器空间,小型网站空间服务器
  9. 2007-11-22 21:24 大端(Big Endian)与小端(Little Endian)详解
  10. ORACLE数据库定时任务自动停止(broken)的原因分析及解决办法