jyjsjd
V2EX  ›  问与答

判断数据在数据库是否存在

  •  
  •   jyjsjd · Nov 16, 2018 · 3439 views
    This topic created in 2912 days ago, the information mentioned may be changed or developed.

    有个导入数据需求,要先判断 id 在数据库是否存在,再决定是报错还是插入。 请教各位如何才能高效地完成?

    16 replies  •  2018-11-16 22:12:43 +08:00
    zn
    zn
    Nov 16, 2018 via iPhone
    1
    根据数据库不同而不同。
    有些数据库支持 replace into,这个应该是最稳妥最方便的。
    有些只能 select 后再去根据情况插入或者 update
    o562dsRcFqYl375i
    o562dsRcFqYl375i
    Nov 16, 2018
    2
    id 是主键?是的话直接 select,本来就快到飞起,你是有多大数据量?
    jyjsjd
    jyjsjd
    OP
    Nov 16, 2018 via iPhone
    3
    @zn replace into 不行,id 是主键,也不好建唯一主键
    jyjsjd
    jyjsjd
    OP
    Nov 16, 2018 via iPhone
    4
    @huangzongzhuan 是主键,select 去查被批了
    kkkkkrua
    kkkkkrua
    Nov 16, 2018
    5
    是程序搞还是 SQL 语句搞?
    springGun
    springGun
    Nov 16, 2018
    6
    mysql 可以使用 insert ignore into ,根据返回值判断有没有插入成功
    so1n
    so1n
    Nov 16, 2018
    7
    insert ignore
    johnniang
    johnniang
    Nov 16, 2018
    8
    @jyjsjd 批量 select 还是每个数据都 select 了?
    EchoUtopia
    EchoUtopia
    Nov 16, 2018 via Android
    9
    postgres 的话可以 insert into. ..on conflict() do nothing returning. id,然后判断这个 id 是否为空,如果是,表示已存在
    FrailLove
    FrailLove
    Nov 16, 2018 via iPhone
    10
    merge into
    jyjsjd
    jyjsjd
    OP
    Nov 16, 2018 via iPhone
    11
    @springGun id 是自增的,也没有唯一索引
    alakey1989
    alakey1989
    Nov 16, 2018
    12
    先说下是什么数据库,什么语言
    jyjsjd
    jyjsjd
    OP
    Nov 16, 2018 via iPhone
    13
    @alakey1989 mysql,Java
    alakey1989
    alakey1989
    Nov 16, 2018
    14
    mysql 的话 insert on duplicate key update 这个看下能行不
    alakey1989
    alakey1989
    Nov 16, 2018
    15
    哦不对,,你不是要更新。。
    BigLion
    BigLion
    Nov 16, 2018
    16
    select 1 from table where xxx=yyy
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1547 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    ♥ Do have faith in what you're doing.