【问题标题】:insert a tuple if not exists a condition mysql如果不存在条件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 查询。 (这是我作业的一部分)
  • 在阅读文档时,流控制语句只能在存储过程中使用。你在课堂上学习过存储过程吗?

标签: mysql sql mysql-workbench


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 1970-01-01
      • 2011-01-14
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多