代码之家  ›  专栏  ›  技术社区  ›  Cam

有条件地插入行

  •  0
  • Cam  · 技术社区  · 14 年前

    我想在表a中插入一行,但前提是表B中存在另一行。例如像这样的事情。。。

    IF EXISTS (SELECT * FROM B WHERE id=1)
        INSERT INTO A
            (id, value1, value2)
            VALUES (1, 'foo', 'bar')
    

    然而,这是行不通的。什么会?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Francisco Soto    14 年前
    INSERT INTO A (value1, value2, value3)
        SELECT 'foo', 'bar', 'foo' FROM B WHERE ID = 1
    

    这里的一个潜在问题是,如果您的条件被满足多次,它将插入尽可能多的行,因此请将您的查询调整为该行,但它将执行您想要的操作,仅在满足select上的条件时插入。

        2
  •  0
  •   mindas    14 年前

    this MySQL手册的一部分,它给出了一个选择的例子,但也许插入也会以类似的方式工作?