2010-09-13 1430 views
7

我们可以在插入语法时使用别名吗?我可以在INSERT语句中使用别名吗?

无以下工作:

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

我似乎无法找到有关这方面的资料;有没有在INSERT语句中使用别名的有效方法?

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

+4

你为什么需要这个? – 2010-09-13 17:07:01

+0

你想用什么SQL? – 2010-09-13 17:09:30

+0

@Meakins - mysql的味道。 @pekka:我编辑了我原来的问题。 – MEM 2010-09-14 17:42:25

回答

5

INSERT syntax不允许别名。为什么你会在INSERT语句中需要一个呢?一次只能将INSERT整合到一张表中。

+9

+1:唯一的原因,我可以看到需要一个别名,如果在一个相关的子查询中... – 2010-09-13 17:16:58

+0

我问是否有意义,因为我明白我不知道所有的可能性在查询,所以,因为我了解到,为了更好地理解我们使用的是什么,使用别名是一个很好的实践......我认为这是相关的。尽管如此,答案部分:“插入语法不允许使用别名”是我现在需要知道的。 ;)由于原因或可能的原因,今天早些时候看到我的问题编辑。非常感谢。 :) – MEM 2010-09-14 17:44:47

+2

语法的便利性,灵活性和一致性。 – Preston 2016-01-22 03:40:26

12

能够在INSERT上使用表别名对ON DUPLICATE KEY语句非常有用,特别是在对列执行检查时。这里有一个例子:

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>; 

如果表名称更改你将不得不修改了很多代码行相比,只具有这是在查询中使用开始的别名。

+2

这应该是一个评论。但无论如何,这是非常重要的 – th3an0maly 2015-04-15 06:45:54

相关问题