表中不存在该名称时,我想插入一行。

当表为空时,它不能插入任何东西,有人可以帮助我吗?

这是我的代码:

INSERT INTO `ediftpdb`.`users`(
      name
      ,passwd
      ,vendor
    )
    SELECT
      'L001'
      ,'12345678a'
      ,'MKTPLS'
    FROM `ediftpdb`.`users`
    WHERE NOT EXISTS (SELECT * FROM `ediftpdb`.`users` WHERE name='L001' AND vendor = 'MKTPLS' ) LIMIT 1;


附言
我发现一个有趣的东西,当ediftpdbusers为空时,下面的代码不返回任何内容。

SELECT
  'L001'
  ,'12345678a'
  ,'MKTPLS'
FROM `ediftpdb`.`users`

最佳答案

更好的方法是在名称和供应商列上创建唯一的多部分索引:

CREATE UNIQUE INDEX name_vendor ON ediftpdb.users( name, vendor )


然后:

INSERT IGNORE INTO ediftpdb.users ( name, passwd, vendor )
  VALUES ( 'L001', '12345678a', 'MKTPLS' )


会完全按照您想要的去做。

关于mysql - MySql中的表为空时无法插入行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7174364/

10-09 23:04