【问题标题】:Mysql multiple simultaneous insert into queriesMysql 多个同时插入到查询中
【发布时间】:2016-04-21 14:02:10
【问题描述】:

我需要将数据从alarm_status_log_table(表2,整个)插入到data_table(表1)的一组列中,并将另一组数据从@987654329 插入data_table(表1)中@table(表3,只是名称和描述),从而完成data_table(表1)。

但问题是,我需要传递给data_table 的名称和描述列必须与它们对应的alarm_id 在同一行。 alarm_idchannel 表中的 channel_id 相同,后者恰好已经具有我要发送到 data_table 的名称和描述。

基本上我想说:

Insert (name, description) from channel(table 3) into data_table(name, description) where channel_id = alarm_id

我该如何继续?

【问题讨论】:

    标签: mysql mysql-workbench sql-insert


    【解决方案1】:

    可以像这样进行更新 JOIN:

    UPDATE data_table a 
    INNER JOIN table3 b ON a.alarm_id = b.channel_id
    SET a.name=b.name, a.description=b.description
    

    如果你不想更新,你可以加入表格吗?也许创建一个连接视图会更好;这将避免出现冗余的不一致数据。

    【讨论】:

    • 问题是channel 表中的名称和描述必须在data_table 中以与alarm_id 对应的方式排序,因此如果第一个警报是编号 213 ,链接到channel 中的channel_id 213 的名称必须是第一行的channel 1 temp。除非我错了,否则联合视图不会给我这个。
    • 这是我想出的,创建device_status_log 表,使用INNER JOIN 查询:SELECT channel.channel_id, channel.name, channel.description FROM channel INNER JOIN device_status_log ON channel.channel_id = device_status_log.alarm_id; 这以正确的顺序对它们进行排序,但现在,我需要将它们完全放入字段中的该顺序归因于我的决赛桌的名称和描述。
    【解决方案2】:

    我需要做的就是使用视图,因为将来自两个表的数据重新排序到第三个表中非常棘手,这是我用来获取所需视图的脚本:

    SELECT channel.name, channel.description, alarm_status_log.* FROM data2desk.alarm_status_log LEFT JOIN data2desk.channel ON channel.channel_id=alarm_status_log.alarm_id

    它成功了:)

    final view

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多