基于其他查询创建INSERT SQL查询

时间:2015-10-30 11:26:12

标签: sql

我需要像这样执行INSERT查询:

INSERT INTO Clients (ClientName, CountryID) VALUES ("STYLUS", 4)

可是:

  • 仅在ClientName(此处为示例的STYLUS)尚不存在时才插入

  • 必须从其他查询中检索CountryID(此处为示例4):SELECT CountryID FROM Countries WHERE CountryUK = 'FRANCE'

是否可以为所有这些构建单个SQL查询?

感谢。

2 个答案:

答案 0 :(得分:0)

对于第一个条件,您需要在表上使用唯一索引/约束:

create unique index unq_clients_clientname;

然后,您可以插入值:

insert into clients(clientname, countryId)
    select 'STYLUS', countryid
    from countries
    where countryuk = 'FRANCE';

如果您尝试插入重复值,则会返回错误。如果您不想要错误,那么与数据库无关的方法是:

insert into clients(clientname, countryId)
    select 'STYLUS', countryid
    from countries
    where countryuk = 'FRANCE' and
          not exists (select 1 from clients c2 where c2.clientname = 'STYLUS');

答案 1 :(得分:0)

很简单,

if not exists(select * from Clients  where Cientname='Stylus') begin insert into Clients select 'Stylus',Countryid from Countries  where countryname='France' end

将完成工作。希望它有所帮助。