单个查询“如果未找到列值,则INSERT INTO表”

时间:2013-01-29 15:48:45

标签: mysql sql insert

如果找不到列值,如何使用单个查询插入表。 例如/我想仅在未找到此用户名时插入新用户

我现在正在做的是问题1查询来检查现有的, 然后另一个查询,如果没有找到。共2个查询

 INSERT INTO friends (memberID) SELECT 1 WHERE NOT EXISTS (SELECT memberID FROM friends WHERE memberID =  1)

3 个答案:

答案 0 :(得分:0)

这个怎么样:

INSERT INTO YourTable (UserName)
SELECT x
FROM (SELECT 'New User Name' AS x) a
      WHERE x NOT IN(SELECT UserName
                     FROM YourTable)

答案 1 :(得分:0)

您只需添加FROM DUAL

即可
INSERT INTO friends 
            (memberid) 
SELECT 1 
FROM   dual 
WHERE  NOT EXISTS (SELECT memberid 
                   FROM   friends 
                   WHERE  memberid = 1)

sql fiddle

答案 2 :(得分:0)

由于您只想要一个具有给定值的行,您应该在表上使用UNIQUE约束强制执行该操作,例如:

ALTER TABLE friends ADD UNIQUE (memberID);

执行此操作后,您只需将IGNORE关键字添加到insert语句中,它就不会报告错误,如果已存在,则不会插入重复的行。

INSERT IGNORE INTO friends(memberID) VALUES(1);
相关问题