如果条件 mysql 不存在则插入一个元组
insert a tuple if not exists a condition mysql
我想编写一个在满足条件时插入到元组中的查询。
例如
table r:
CREATE TABLE r(A INT, B INT)
table b:
CREATE TABLE b(C INT, D INT, E INT)
如果 b 中没有像 (1, 2, 2)
这样的元组,我想将元组 (1,1)
插入到 r 中。
我试过这个查询,但出现语法错误:
IF NOT EXISTS(SELECT * FROM b WHERE C=1 AND D=2 AND E=2)
Begin
INSERT INTO r VALUES(1, 1)
End
有没有办法做到这一点?
您可以使用下面的 SQL 查询。在上面 post 中,您正在尝试使用过程,但这不是正确的方法;关注 given link 了解更多关于 procedure
INSERT INTO r (A,B)
SELECT * FROM (SELECT 1 AS A, 1 AS B) AS temp
WHERE NOT EXISTS (
SELECT * FROM b WHERE C=1 AND D=2 AND E=2
) LIMIT 1;
我建议这样写:
INSERT INTO r (A, B)
SELECT 1, 1
WHERE NOT EXISTS (SELECT 1 FROM b WHERE C = 1 AND D = 2 AND E = 2);
我想编写一个在满足条件时插入到元组中的查询。 例如
table r:
CREATE TABLE r(A INT, B INT)
table b:
CREATE TABLE b(C INT, D INT, E INT)
如果 b 中没有像 (1, 2, 2)
这样的元组,我想将元组 (1,1)
插入到 r 中。
我试过这个查询,但出现语法错误:
IF NOT EXISTS(SELECT * FROM b WHERE C=1 AND D=2 AND E=2)
Begin
INSERT INTO r VALUES(1, 1)
End
有没有办法做到这一点?
您可以使用下面的 SQL 查询。在上面 post 中,您正在尝试使用过程,但这不是正确的方法;关注 given link 了解更多关于 procedure
INSERT INTO r (A,B)
SELECT * FROM (SELECT 1 AS A, 1 AS B) AS temp
WHERE NOT EXISTS (
SELECT * FROM b WHERE C=1 AND D=2 AND E=2
) LIMIT 1;
我建议这样写:
INSERT INTO r (A, B)
SELECT 1, 1
WHERE NOT EXISTS (SELECT 1 FROM b WHERE C = 1 AND D = 2 AND E = 2);