当找不到列值时,如何使用单个查询插入表。例如/我只想在找不到此用户名时插入新用户
我现在做的是发出 1 个查询来检查是否存在,然后如果没有找到现有的另一个查询。共 2 个查询
INSERT INTO friends (memberID) SELECT 1 WHERE NOT EXISTS (SELECT memberID FROM friends WHERE memberID = 1)
这个怎么样:
INSERT INTO YourTable (UserName)
SELECT x
FROM (SELECT 'New User Name' AS x) a
WHERE x NOT IN(SELECT UserName
FROM YourTable)
你只需要添加FROM DUAL
INSERT INTO friends
(memberid)
SELECT 1
FROM dual
WHERE NOT EXISTS (SELECT memberid
FROM friends
WHERE memberid = 1)
由于您只想要一个具有给定值的行,因此您应该在表上使用 UNIQUE 约束来强制执行它,例如:
ALTER TABLE friends ADD UNIQUE (memberID);
完成此操作后,您只需将 IGNORE 关键字添加到您的插入语句中,它就不会报告错误,并且如果它已经存在,它也不会插入重复的行。
INSERT IGNORE INTO friends(memberID) VALUES(1);