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

时间:2010-09-13 17:05:14

标签: mysql insert alias

我们可以将带有insert的别名用于语法吗?

以下工作均无效:

INSERT INTO tableblabla AS bla
INSERT INTO bla tableblabla
INSERT INTO tableblabla bla

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

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

2 个答案:

答案 0 :(得分:15)

唉,INSERT syntax可以看出这是不可能的。请注意它只是说[INTO] tbl_name而没有提及[AS] alias,而允许别名的Update syntax表示“table_reference”和further documentation状态可以扩展为 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>;

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

答案 1 :(得分:5)

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