› 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 · Mar 31, 2017 via iPhone · 4463 views
    This topic created in 3467 days ago, the information mentioned may be changed or developed.
    比如我这有一组学号,用 select * from table where in 来查找, in 里面有 50 个学号,但是 select 出来只有 40 个,我改如何找出在数据库中不存在的学号呢,先谢谢大家了
    16 replies  •  2017-04-01 11:24:51 +08:00
    bbao
        1
    bbao  
       Mar 31, 2017
    还是放原题吧
    AnonymousAccout
        2
    AnonymousAccout  
    OP
       Mar 31, 2017 via iPhone
    @bbao 就是这样的需求,别人扔了个 excel 过来,里面一组学号,然后要在一个表里查哪个学号不存在 Orz
    ivvei
        3
    ivvei  
       Mar 31, 2017   ❤️ 1
    集合减。
    minus 的语法 MySQL 没实现,可以用 left join 来做。
    ivvei
        4
    ivvei  
       Mar 31, 2017   ❤️ 1
    或者 not in 可以。但是你都得构造 50 个学号的一个集合。
    ivvei
        5
    ivvei  
       Mar 31, 2017
    我在 3 楼多敲了个 left
    ivvei
        6
    ivvei  
       Mar 31, 2017
    在 4 楼少敲了个“也”。 在 5 楼只打出了半句话…… 还有半句是“却没有敲出后面要用条件删选”, 我这特么都醉了……
    AnonymousAccout
        7
    AnonymousAccout  
    OP
       Mar 31, 2017 via iPhone
    @ivvei not in 的话是 select from 构建的集合 not in 实际的表 这样做吗
    ivvei
        8
    ivvei  
       Mar 31, 2017   ❤️ 1
    @AnonymousAccout 是。 select 一条条记录 union 起来,或者你直接把 excel 数据插入一个表,然后 select 那个表,这样写起来省点事。然后 not in 你要对比的表。
    billgreen1
        9
    billgreen1  
       Mar 31, 2017   ❤️ 1
    SELECT
    *
    FROM table1 t1
    LEFT JOIN table2 t2 ON t1.id = t2.id
    WHERE t2.id IS NULL
    Immortal
        10
    Immortal  
       Mar 31, 2017
    not in 不就好了
    既然你自己说 in 能从 50 几个里查到 40 几个 剩下的就是不存在的
    neilwong
        11
    neilwong  
       Mar 31, 2017
    工作中遇到过类似的问题,后来解决的方案是:

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

    解决方案非常不优化,但胜在快速简单...
    liuxin5959
        12
    liuxin5959  
       Mar 31, 2017
    请独立完成作业。
    AnonymousAccout
        13
    AnonymousAccout  
    OP
       Apr 1, 2017 via iPhone
    @liuxin5959 不是作业啊😂
    mingl0280
        14
    mingl0280  
       Apr 1, 2017   ❤️ 1
    @Immortal 你这个错了, NOT IN 是数据库中存在但不匹配 IN 列表的项。
    @AnonymousAccout 全部 Select 出来做个哈希表比对下就行了。
    AnonymousAccout
        15
    AnonymousAccout  
    OP
       Apr 1, 2017 via iPhone
    这属于差集运算 最后得出还是左连接 + is null 效率最高
    Immortal
        16
    Immortal  
       Apr 1, 2017
    @mingl0280 你说的对的 是我没过大脑 第一反应
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1041 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:34 · PVG 01:34 · LAX 10:34 · JFK 13:34
    ♥ Do have faith in what you're doing.