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