0

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

我现在做的是发出 1 个查询来检查是否存在,然后如果没有找到现有的另一个查询。共 2 个查询

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

3 回答 3

0

这个怎么样:

INSERT INTO YourTable (UserName)
SELECT x
FROM (SELECT 'New User Name' AS x) a
      WHERE x NOT IN(SELECT UserName
                     FROM YourTable)
于 2013-01-29T16:07:25.830 回答
0

你只需要添加FROM DUAL

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

sql小提琴

于 2013-01-29T21:52:09.327 回答
0

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

ALTER TABLE friends ADD UNIQUE (memberID);

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

INSERT IGNORE INTO friends(memberID) VALUES(1);
于 2013-01-29T22:24:47.953 回答