【问题标题】:MySQL INSERT INTO ... VALUES and SELECTMySQL INSERT INTO ... 值和选择
【发布时间】:2013-03-09 13:12:33
【问题描述】:

有没有办法插入预设值和我从选择查询中获得的值? 例如:

INSERT INTO table1 VALUES ("A string", 5, [int]).

我有“A string”的值和数字 5,但我必须从这样的选择中找到 [int] 值:

SELECT idTable2
FROM table2
WHERE ...

这给了我将 ID 放入 table1 中。

如何将其合并到一个语句中?

【问题讨论】:

    标签: mysql sql select insert


    【解决方案1】:

    尝试以下方法:

    INSERT INTO table1 
    SELECT 'A string', 5, idTable2 idTable2 FROM table2 WHERE ...
    

    【讨论】:

      【解决方案2】:

      使用insert ... select 查询,并将已知值放入select

      insert into table1
      select 'A string', 5, idTable2
      from table2
      where ...
      

      【讨论】:

      • 我发现这种方法的一个问题是,如果SELECT 返回零记录,则语句成功但没有数据是INSERT
      • @NeilC.Obremski:是的,但如果您期望结果是别的东西,这只是一个问题。如果你想在这种情况下出错,你可以使用子查询来代替。
      • 非常感谢,我正在网上搜索这个
      【解决方案3】:

      只需在此处使用子查询,例如:

      INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)).
      

      【讨论】:

      • +1 提供了如何在仍然使用 VALUES 语法的同时执行此操作的示例。
      • 此方法可能会出现“超过 1 行”这样的错误
      • 应该是“INSERT INTO table1 VALUES ("A string", 5, (SELECT ... LIMIT 1))。”
      • 当您只需要将一个表中的一行中的几个值复制到另一个表中的新行中时,此解决方案非常有用。
      【解决方案4】:

      试试这个:

      INSERT INTO table1 SELECT "A string", 5, idTable2 FROM table2 WHERE ...
      

      【讨论】:

        【解决方案5】:
        INSERT INTO table1 
        SELECT "A string", 5, idTable2
        FROM table2
        WHERE ...
        

        见:http://dev.mysql.com/doc/refman/5.6/en/insert-select.html

        【讨论】:

          【解决方案6】:
          INSERT INTO table1 (col1, col2)
          SELECT "a string", 5, TheNameOfTheFieldInTable2
          FROM table2 where ...
          

          【讨论】:

            【解决方案7】:

            试试这个

            INSERT INTO TABLE1 (COL1 , COL2,COL3) values
            ('A STRING' , 5 , (select idTable2 from Table2) )
            where ...
            

            【讨论】:

            • SELECT 表中的多个列怎么样?如果我尝试不止一列来自那里,我会得到Operand should contain 1 column(s)
            • 就是这样。是的!
            【解决方案8】:

            所有其他答案都解决了这个问题,我的答案与其他答案的工作方式相同,但只是以更具教学性的方式(这适用于 MySQL...不知道其他 SQL 服务器):

            INSERT INTO table1 SET 
              stringColumn  = 'A String', 
              numericColumn = 5, 
              selectColumn  = (SELECT idTable2 FROM table2 WHERE ...);
            

            您可以参考 MySQL 文档:INSERT Syntax

            【讨论】:

              【解决方案9】:
              插入表名 1 (ID, 姓名, 地址, 联系电话) SELECT id、name、address、contact_number FROM table_name2;

              【讨论】:

                【解决方案10】:
                INSERT INTO table1(Table2Id, KeyTypeEnumId, SortOrder, TenantId)
                    SELECT Id, 1, 1, TenantId
                    FROM table2
                    WHERE WebsitePageTypeEnumId = 10 AND ElementTypeEnumId = 16
                

                【讨论】:

                  猜你喜欢
                  • 2010-11-17
                  • 2012-06-01
                  • 1970-01-01
                  • 2017-02-15
                  • 2019-01-10
                  • 2010-10-26
                  • 2014-02-11
                  • 1970-01-01
                  • 2014-07-08
                  相关资源
                  最近更新 更多