【问题标题】:MYSQL: How to insert rows in a table based on a condition of other two tablesMYSQL:如何根据其他两个表的条​​件在表中插入行
【发布时间】:2015-06-02 18:09:58
【问题描述】:

设置是这样的:

表 A 有列 desc 和 date

表 B 有列 desc、date 和 task

表 C 有列 keyid 和 type。

我想做的是将表B中的一些行复制到表A中,其中A.desc应该是B.desc,A.date应该是B.date。要选择要复制的行,逻辑如下:“B.task = C.keyid AND C.type='1' 的所有行”。

如果我只想选择要复制的行,查询将是这样的:

SELECT B.desc, B.date FROM B,C WHERE B.task=C.keyid AND C.type='1'

需要将该选择产生的行复制到 A。我知道如何编写选择,但如何编写 INSERT INTO 查询?

【问题讨论】:

  • 请注意,desc 是 MySQL 中的保留字,因此通常不适合用作列/表标识符。
  • 好的。谢谢你的建议。

标签: mysql


【解决方案1】:

这个未经测试的查询应该可以工作:

insert into tableA (tableA.desc, tableA.data) SELECT B.desc, B.date FROM B,C WHERE B.task=C.keyid AND C.type='1'

【讨论】:

    【解决方案2】:

    你可以运行这个查询:

     INSERT INTO A(desc, date) 
        VALUES (
          SELECT B.desc, B.date 
           FROM B,C 
           WHERE B.task=C.keyid AND C.type='1' 
        )
    

    我希望它会有所帮助。

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      INSERT INTO table_A (desc, date)
      SELECT B.desc, B.date FROM table_B as B,table_C as C WHERE B.task=C.keyid AND C.type='1'
      

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多