比如我这有一组学号,用 select * from table where in 来查找, in 里面有 50 个学号,但是 select 出来只有 40 个,我改如何找出在数据库中不存在的学号呢,先谢谢大家了
1
bbao Mar 31, 2017
还是放原题吧
|
2
AnonymousAccout OP @bbao 就是这样的需求,别人扔了个 excel 过来,里面一组学号,然后要在一个表里查哪个学号不存在 Orz
|
3
ivvei Mar 31, 2017 集合减。
minus 的语法 MySQL 没实现,可以用 left join 来做。 |
4
ivvei Mar 31, 2017 或者 not in 可以。但是你都得构造 50 个学号的一个集合。
|
5
ivvei Mar 31, 2017
我在 3 楼多敲了个 left
|
6
ivvei Mar 31, 2017
在 4 楼少敲了个“也”。 在 5 楼只打出了半句话…… 还有半句是“却没有敲出后面要用条件删选”, 我这特么都醉了……
|
7
AnonymousAccout OP @ivvei not in 的话是 select from 构建的集合 not in 实际的表 这样做吗
|
8
ivvei Mar 31, 2017 @AnonymousAccout 是。 select 一条条记录 union 起来,或者你直接把 excel 数据插入一个表,然后 select 那个表,这样写起来省点事。然后 not in 你要对比的表。
|
9
billgreen1 Mar 31, 2017 |
10
Immortal Mar 31, 2017
not in 不就好了
既然你自己说 in 能从 50 几个里查到 40 几个 剩下的就是不存在的 |
11
neilwong Mar 31, 2017
工作中遇到过类似的问题,后来解决的方案是:
先做一次初始化,然后把有的数据更新,最后查未更新过的。 解决方案非常不优化,但胜在快速简单... |
12
liuxin5959 Mar 31, 2017
请独立完成作业。
|
13
AnonymousAccout OP @liuxin5959 不是作业啊😂
|
14
mingl0280 Apr 1, 2017 |
15
AnonymousAccout OP 这属于差集运算 最后得出还是左连接 + is null 效率最高
|