我有一个简单的表用户(姓名,城市,国家),需要添加几行,其中一些值是相同的(城市,国家)。有没有更好的方法在旁边插入数据:
insert into Users (name, city, country) values
("John", "Paris", "France"),
("Anna", "Paris", "France"),
("Peter", "Paris", "France"),
("Mary", "Paris", "France")
谢谢
我有一个简单的表用户(姓名,城市,国家),需要添加几行,其中一些值是相同的(城市,国家)。有没有更好的方法在旁边插入数据:
insert into Users (name, city, country) values
("John", "Paris", "France"),
("Anna", "Paris", "France"),
("Peter", "Paris", "France"),
("Mary", "Paris", "France")
谢谢
您可以使用如下查询:
insert into Users (name, city, country)
select name, city, country
from (select 'John' as name union all
select 'Anna' union all
select 'Peter' union all
select 'Mary') as t1
cross join (select 'Paris' as city, 'France' as country) as t2
您应该能够使用变量。所以它看起来像......
set @city="Paris";
set @country="France";
insert into Users(name, city, country) values
("John", @city, @country)
尽管您可以通过在特定的 RDBMS 语法中使用变量来稍微简化这一点,但由于您在定义表时做出的设计决策,您不得不将相同的值插入到表的多行中Users
。
问题是您的表未规范化,这意味着相同的信息多次出现。解决此问题的正确方法是定义一个国家表,一个引用它的城市表,并将Users
表更改为引用Cities
。
Your solution is correct normaly but try to replace " by ' else try it:
insert into Users (name, city, country)
select *
from (
select 'John', 'Paris', 'France' union all
select 'Anna', 'Paris', 'France' union all
select 'Peter', 'Paris', 'France' union all
select 'Mary', 'Paris', 'France'
) tmp