我可以在INSERT语句中使用别名吗?

MEM*_*MEM 7 mysql alias insert

我们可以在语法中使用带插入的别名吗?

以下工作均不属于:

INSERT INTO tableblabla AS bla
INSERT INTO bla tableblabla
INSERT INTO tableblabla bla
Run Code Online (Sandbox Code Playgroud)

我似乎找不到任何关于此的信息; 是否有一种在INSERT语句中使用别名的有效方法?

关于可能的原因:http: //bugs.mysql.com/bug.php?id = 3275

小智 17

唉,INSERT语法可以看出它是不可能的.注意它只是说[INTO] tbl_name没有提及[AS] alias,而更新语法,它允许别名,说"table_reference"和进一步的文档说明这可以扩展到table_factor包括tbl_name [AS] alias.

不幸的是因为能够在INSERT上使用表别名对INSERT ... ON DUPLICATE KEY UPDATE语句非常有用.特别是在对列进行检查时,如下例所示:

insert into very_long_table_name_that_can_be_modified_one_day_or_during_testing (
    mykey, 
    column1,
    column2,
    column3,
    <column99>
)
select
    mykey, 
    column1,
    column2,
    column3,
    <column99>
from subquery
on duplicate key update 
    column1 = ifnull(values(column1), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column1), 
    column2 = ifnull(values(column2), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column2), 
    column3 = ifnull(values(column3), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column3), 
    <column99>;
Run Code Online (Sandbox Code Playgroud)

如果表名更改,则必须修改许多代码行,而不是在查询中使用的开头使用别名.

  • 这应该是一个评论.但无论如何都要投票,因为它非常重要 (2认同)

Dan*_*uis 6

INSERT语法不允许别名.为什么在INSERT语句中你还需要一个呢?您一次只能INSERT进入一个表.

  • +1:唯一的原因我可以看到需要别名是在相关子查询中... (9认同)
  • 语法的便利性,灵活性和一致性. (3认同)