给定一组数据,怎样找出数据库里没有的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
AnonymousAccout
V2EX    MySQL

给定一组数据,怎样找出数据库里没有的

  •  
  •   AnonymousAccout 2017-03-31 10:48:43 +08:00 via iPhone 3842 次点击
    这是一个创建于 3165 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我这有一组学号,用 select * from table where in 来查找, in 里面有 50 个学号,但是 select 出来只有 40 个,我改如何找出在数据库中不存在的学号呢,先谢谢大家了
    16 条回复    2017-04-01 11:24:51 +08:00
    bbao
        1
    bbao  
       2017-03-31 11:00:26 +08:00
    还是放原题吧
    AnonymousAccout
        2
    AnonymousAccout  
    OP
       2017-03-31 11:04:28 +08:00 via iPhone
    @bbao 就是这样的需求,别人扔了个 excel 过来,里面一组学号,然后要在一个表里查哪个学号不存在 Orz
    ivvei
        3
    ivvei  
       2017-03-31 11:05:28 +08:00   1
    集合减。
    minus 的语法 MySQL 没实现,可以用 left join 来做。
    ivvei
        4
    ivvei  
       2017-03-31 11:06:49 +08:00   1
    或者 not in 可以。但是你都得构造 50 个学号的一个集合。
    ivvei
        5
    ivvei  
       2017-03-31 11:08:09 +08:00
    我在 3 楼多敲了个 left
    ivvei
        6
    ivvei  
       2017-03-31 11:11:12 +08:00
    在 4 楼少敲了个“也”。 在 5 楼只打出了半句话…… 还有半句是“却没有敲出后面要用条件删选”, 我这特么都醉了……
    AnonymousAccout
        7
    AnonymousAccout  
    OP
       2017-03-31 11:11:12 +08:00 via iPhone
    @ivvei not in 的话是 select from 构建的集合 not in 实际的表 这样做吗
    ivvei
        8
    ivvei  
       2017-03-31 11:13:26 +08:00   1
    @AnonymousAccout 是。 select 一条条记录 union 起来,或者你直接把 excel 数据插入一个表,然后 select 那个表,这样写起来省点事。然后 not in 你要对比的表。
    billgreen1
        9
    billgreen1  
       2017-03-31 11:14:46 +08:00   1
    SELECT
    *
    FROM table1 t1
    LEFT JOIN table2 t2 ON t1.id = t2.id
    WHERE t2.id IS NULL
    Immortal
        10
    Immortal  
       2017-03-31 11:18:43 +08:00
    not in 不就好了
    既然你自己说 in 能从 50 几个里查到 40 几个 剩下的就是不存在的
    neilwong
        11
    neilwong  
       2017-03-31 11:56:41 +08:00
    工作中遇到过类似的问题,后来解决的方案是:

    先做一次初始化,然后把有的数据更新,最后查未更新过的。

    解决方案非常不优化,但胜在快速简单...
    liuxin5959
        12
    liuxin5959  
       2017-03-31 22:54:13 +08:00
    请独立完成作业。
    AnonymousAccout
        13
    AnonymousAccout  
    OP
       2017-04-01 07:59:08 +08:00 via iPhone
    @liuxin5959 不是作业啊
    mingl0280
        14
    mingl0280  
       2017-04-01 09:08:18 +08:00   1
    @Immortal 你这个错了, NOT IN 是数据库中存在但不匹配 IN 列表的项。
    @AnonymousAccout 全部 Select 出来做个哈希表比对下就行了。
    AnonymousAccout
        15
    AnonymousAccout  
    OP
       2017-04-01 10:19:17 +08:00 via iPhone
    这属于差集运算 最后得出还是左连接 + is null 效率最高
    Immortal
        16
    Immortal  
       2017-04-01 11:24:51 +08:00
    @mingl0280 你说的对的 是我没过大脑 第一反应
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2699 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 13:25 PVG 21:25 LAX 05:25 JFK 08:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86