【问题标题】:Insert data from mysql view into a table where not exist将mysql视图中的数据插入到不存在的表中
【发布时间】:2016-02-29 21:09:21
【问题描述】:

在视图中填充新数据时,表格不会更新。查询运行没有错误,但表没有更新。我正在尝试根据运输 ID 使用表中尚未包含的视图中的数据更新表。

INSERT INTO `table`(`store`, `shippingid`)
SELECT store,shipment_id FROM view WHERE NOT EXISTS (SELECT `shippingid` FROM `table`)

【问题讨论】:

  • table 是用来创建view 的吗?当您同时从中选择表格时,您通常无法更改表格,即使它隐藏在视图后面。

标签: mysql sql view


【解决方案1】:

您必须包含视图和表格之间的相关性:

INSERT INTO `table`(`store`, `shippingid`)
SELECT store,shipment_id 
FROM view 
WHERE NOT EXISTS (SELECT `shippingid` 
                  FROM `table` 
                  WHERE shippingid = view.shipment_id)

请注意,此查询是 INSERT 操作,而不是 UPDATE

【讨论】:

  • 完美!非常感谢!
【解决方案2】:

如果您的表格中有任何行,这将始终是错误的:

WHERE NOT EXISTS (SELECT `shippingid` FROM `table`)

看来您可能需要添加相关性:

WHERE NOT EXISTS (SELECT `shippingid` FROM `table` WHERE shippingid = view.shipment_id)

请注意,理论上,子查询对外部查询的每一行执行一次。因此,要了解流程.. 获取一些样本数据并了解查询将如何产生结果。

【讨论】:

    猜你喜欢
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多