MySQL - 从临时表插入

标签 mysql sql sql-insert mysql-error-1064 temporary

这看起来非常简单,但我坚持使用一个简单的插入语句。见下文:

begin work;
CREATE TEMPORARY TABLE IF NOT EXISTS insert_table AS 
(
select
     r.resource_id
    ,fr.file_repos_id
    ,mv.VALUE

from
         resources r
   join  versions v on v.RESOURCE_ID = r.resource_id
   join  metadata_values mv on mv.resource_id = r.resource_id
   join  file_repository fr on fr.file_repos_id = v.foreign_id

where  
        v.version_status = 'C'
    and r.RESOURCE_TYPE = 4
    and fr.file_title in ('suburbs')
);


insert 
    into 
        metadata_values (elem_id,value,resource_type,resource_id,foreign_id,mtvr_id,mett_id) 
    values
        (62,'test',4,insert_table.resource_id,insert_table.file_repos_id,80,4);

rollback work;

在临时表行 fr.file_title in ('suburbs') 中,实际列表是从其他地方动态提取的(这是为了演示目的)。我收到以下错误消息:

错误代码:1054。“字段列表”中的未知列“insert_table.resource_id”

现在,我可以在整个临时表上运行一个选择,它返回正常,它只是在更新语句处失败。我正在从 MySQL 工作台运行它。完全不知道这里发生了什么。

最佳答案

你想要 insert 。 . .选择:

insert into  metadata_values(elem_id,value, resource_type, resource_id, foreign_id,
                             mtvr_id, mett_id
                            ) 
    select 62, 'test', 4, insert_table.resource_id, insert_table.file_repos_id, 80, 4
    from insert_table;

关于MySQL - 从临时表插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741627/

相关文章:

mysql - 我可以使用事务来确保停止查询后查询的结果正是我想要的吗?

mysql - Node 准备语句: use LAST_INSERT_ID in second query with variable items

Python 和 MySQL : Error with simple INSERT

mysql - Rails(utf-8编码问题): Active record fetching msyqldb data incorrectly

mysql - my.cnf 更改 datadir,2 天仍然没有运气

php - Laravel 4 - 使用多个复选框重新填充表单以进行编辑

sql - 拒绝特定字符

MySQL 重用变量输出 NULL

php - Mysql 按分数列出一组行

mysql - 将值插入表中的新列,根据同一表中的数据计算