如果不存在条件mysql则插入一个元组
Posted
技术标签:
【中文标题】如果不存在条件mysql则插入一个元组【英文标题】:insert a tuple if not exists a condition mysql 【发布时间】:2021-05-03 05:23:06 【问题描述】:如果满足条件,我想编写一个插入到元组中的查询。 例如
表 r:
CREATE TABLE r(A INT, B INT)
表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
有没有办法做到这一点?
【问题讨论】:
您是通过程序执行此操作吗?因为从代码中通过两个查询很容易做到这一点。 @TimRoberts 不,我没有使用任何第三方语言,只是 SQL 查询。 (这是我作业的一部分) 在阅读文档时,流控制语句只能在存储过程中使用。你在课堂上学习过存储过程吗? 【参考方案1】:您可以使用以下 SQL 查询。在上面的帖子中,您尝试使用程序,但这不是正确的方法;按照给定的链接了解更多关于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;
【讨论】:
【参考方案2】:我建议这样写:
INSERT INTO r (A, B)
SELECT 1, 1
WHERE NOT EXISTS (SELECT 1 FROM b WHERE C = 1 AND D = 2 AND E = 2);
【讨论】:
以上是关于如果不存在条件mysql则插入一个元组的主要内容,如果未能解决你的问题,请参考以下文章