【问题标题】:MySql insert the results of a selectMySql 插入一个选择的结果
【发布时间】:2011-05-27 06:05:46
【问题描述】:

我想知道我是否可以运行这样的请求:

INSERT INTO t2 (a, b) 
VALUES (
 SELECT a, b
 FROM `t1` AS o
 WHERE o.id NOT 
 IN (
  SELECT a
  FROM t2 
  )
)

这个想法是用来自 t1 的一些数据填充 t2,但我的语法一定是错误的。

感谢您的帮助

【问题讨论】:

    标签: mysql select insert


    【解决方案1】:

    您的查询中不需要 VALUES。

    【讨论】:

    • 这就是我们所说的聪明答案!
    【解决方案2】:

    删除values

    喜欢

    INSERT INTO t2 (a, b) 
    SELECT a, b
    FROM `t1` AS o
    WHERE o.id NOT 
    IN 
    (
      SELECT a
      FROM t2 
    );
    

    或者更易读的格式

    INSERT INTO t2 (a, b) 
    SELECT o.a, o.b
    FROM `t1` AS o
    LEFT JOIN t2 ON o.id=t2.a
    WHERE t2.a IS NULL;
    

    【讨论】:

      【解决方案3】:

      SELECT 语句插入时,不要使用VALUES 关键字。

      INSERT INTO t2 (a, b) 
       SELECT a, b
       FROM `t1` AS o
       WHERE o.id NOT 
       IN (
        SELECT a
        FROM t2 
        )
      

      【讨论】:

        猜你喜欢
        • 2014-08-01
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        相关资源
        最近更新 更多