加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-12 01:08:11 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程MySQL查询in操作 查询结果按in集合顺序显示》要点: 本文介绍了MYSQL教程MySQL查询in操作 查询结果按in集合顺序显示,希望对您有用。如果有疑问,可以联系我们。 MySQL 查询in操作,查询结果按in集合顺序显示 代码如下: select * from test where

《MYSQL教程MySQL查询in操作 查询结果按in集合顺序显示》要点:
本文介绍了MYSQL教程MySQL查询in操作 查询结果按in集合顺序显示,希望对您有用。如果有疑问,可以联系我们。

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


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

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

sql: select * from table where id IN (3,7) order by field(id,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,382,100034
3,100034
4,100034
6,100034
7,100034
8,100034
9,100034
10,100034
11,100034
12,100034
13,100034
100001,100034
100002,100034

排除(id=3 && info_type_id=8) and (id=4 && info_type_id=8)@l,即找出其它
error: select * from info where episode_id=100034 and id not in(3,4) and info_type_id not in (8);
error result:
id,episode_id
100001,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,100034
理解:id<>3 or info_type_id<>8排除掉id=3 && info_type_id=8@l,表中主I多于一r,不能蔚厥褂key1 NOT IN (……) AND key2 NOT IN (……) ..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读