【问题标题】:How to use 'select ' in MySQL 'insert' statement如何在 MySQL 'insert' 语句中使用 'select'
【发布时间】:2012-06-15 17:39:22
【问题描述】:

我正在尝试将其他行插入到需要从另一个表中检索值的表中。下面是一个示例查询:

insert into a.grades (rollno, grade)
values(select rollno from b.students where ssn=12345, 'A');

b.students 表的结构是rollno, ssn, name

我知道上面的查询是错误的。有没有办法在插入行时从其他表中检索 1 个值?

【问题讨论】:

  • 我试过了,没有在 select 语句周围加上括号。现在我通过添加 ( ) 得到它。

标签: mysql select insert


【解决方案1】:

insert into 和 select 中的列必须相等

INSERT INTO grades (field1, field2)
  SELECT field1, field2 from students where ssn=12345;

【讨论】:

    【解决方案2】:

    来自两个不同数据库的表!

    数据库1 - 人

    Database2 - 订单

    • 表格 - per_details
    • 表格 - or_details

    这里是数据库2下使用的插入查询!

    INSERT INTO `or_details`(`per_name`) VALUES ( (SELECT person.per_details.per_name from person.per_details WHERE person.per_details.id=1001) );
    

    【讨论】:

      【解决方案3】:
      INSERT INTO a.grades (rollno, grade)
          SELECT rollno, 'A' FROM b.students WHERE ssn = 12345;
      

      一些 DBMS 会接受以下内容,在 SELECT 语句周围有一组额外的括号:

      INSERT INTO a.grades (rollno, grade)
         VALUES((SELECT rollno FROM b.students WHERE ssn = 12345), 'A');
      

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 2011-12-04
        • 2019-09-14
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        相关资源
        最近更新 更多