表中不存在该名称时,我想插入一行。
当表为空时,它不能插入任何东西,有人可以帮助我吗?
这是我的代码:
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;
附言
我发现一个有趣的东西,当
ediftpdb
。users
为空时,下面的代码不返回任何内容。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/