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

获取SQL insert的动态变量

  •  -2
  • JacobIRR  · 技术社区  · 6 年前

    INSERT INTO my_table
    VALUES (SPECIAL_ID, 62, 0, 1, -1, NULL, NULL, -1)
    WHERE sp_id IN (SELECT id = SPECIAL_ID
                    FROM foo
                    WHERE lock IS NULL)
    

    SPECIAL_ID 尚未定义,但应等于 id 来自内心 SELECT 声明来自 foo .

    2 回复  |  直到 6 年前
        1
  •  2
  •   Brad    6 年前

    只是不要使用值,而是使用select

    INSERT INTO my_table (need To declare list of column names for table insert)
    Select SPECIAL_ID, 62, 0, 1, -1, NULL, NULL, -1
    From Table
    WHERE sp_id IN(
        SELECT id = SPECIAL_ID
        FROM foo
        WHERE lock IS NULL
    )
    

    如果没有可供sp\u id使用的表,则可以去掉caluse所在的表,并将子选项上移如下:

    INSERT INTO my_table (need To declare list of column names for table insert)
    Select SPECIAL_ID, 62, 0, 1, -1, NULL, NULL, -1    
    FROM foo
    WHERE lock IS NULL
    
        2
  •  0
  •   Paul Shumaker    6 年前
    SELECT SPECIAL_ID, 62, 0, 1, -1, NULL, NULL, -1 
    INTO my_table 
    FROM your_source_table 
    WHERE sp_id in (SELECT id = SPECIAL_ID
                   FROM foo
                   WHERE lock IS NULL)
    

    列出列名是不必要的,除非它们的顺序位置不同,或者您只将此应用于某些列,而不是所有列