Sql server 使用Where子句的SQL Insert

Sql server 使用Where子句的SQL Insert,sql-server,Sql Server,我正在尝试编写一个查询,该查询仅在表中不存在数据时插入数据。我的问题是: INSERT INTO JobTable (JobTitleName) VALUES ('PROGRAMMER') WHERE JobTitleName NOT EXISTS(SELECT JobTitleName FROM JobTable x WHERE x.JobTitleName = 'PROGRAMMER') 我在“where”子句上出错了。我相信答案很简单,我只是画了一张空白。如果有任何帮助,我们将不胜感激

我正在尝试编写一个查询,该查询仅在表中不存在数据时插入数据。我的问题是:

INSERT INTO JobTable (JobTitleName)
VALUES ('PROGRAMMER') 
WHERE JobTitleName NOT EXISTS(SELECT JobTitleName FROM
JobTable x WHERE x.JobTitleName = 'PROGRAMMER')

我在“where”子句上出错了。我相信答案很简单,我只是画了一张空白。如果有任何帮助,我们将不胜感激。

使用IF语句来测试有问题的值是否存在

IF NOT EXISTS(SELECT JobTitleName 
                  FROM JobTable x 
                  WHERE x.JobTitleName = 'PROGRAMMER')
    INSERT INTO JobTable 
        (JobTitleName)
        VALUES 
        ('PROGRAMMER');

使用IF语句来测试有问题的值是否存在

IF NOT EXISTS(SELECT JobTitleName 
                  FROM JobTable x 
                  WHERE x.JobTitleName = 'PROGRAMMER')
    INSERT INTO JobTable 
        (JobTitleName)
        VALUES 
        ('PROGRAMMER');

使用IF语句来测试有问题的值是否存在

IF NOT EXISTS(SELECT JobTitleName 
                  FROM JobTable x 
                  WHERE x.JobTitleName = 'PROGRAMMER')
    INSERT INTO JobTable 
        (JobTitleName)
        VALUES 
        ('PROGRAMMER');

使用IF语句来测试有问题的值是否存在

IF NOT EXISTS(SELECT JobTitleName 
                  FROM JobTable x 
                  WHERE x.JobTitleName = 'PROGRAMMER')
    INSERT INTO JobTable 
        (JobTitleName)
        VALUES 
        ('PROGRAMMER');

不能在
insert
中使用
where
子句,但可以使用查询作为insert的源,并且可以使用
where

使用
左联接
加入
作业表
,这样,如果作业标题已存在,则可以使查询返回零记录:

insert into
    JobTable (JobTitleName)
select
    x.Title
from
    (select 'PROGRAMMER' as JobTitleName) x
    left join JobTable j on j.JobTitleName = x.JobTitleName
where
    j.JobTitleName is null

不能在
insert
中使用
where
子句,但可以使用查询作为insert的源,并且可以使用
where

使用
左联接
加入
作业表
,这样,如果作业标题已存在,则可以使查询返回零记录:

insert into
    JobTable (JobTitleName)
select
    x.Title
from
    (select 'PROGRAMMER' as JobTitleName) x
    left join JobTable j on j.JobTitleName = x.JobTitleName
where
    j.JobTitleName is null

不能在
insert
中使用
where
子句,但可以使用查询作为insert的源,并且可以使用
where

使用
左联接
加入
作业表
,这样,如果作业标题已存在,则可以使查询返回零记录:

insert into
    JobTable (JobTitleName)
select
    x.Title
from
    (select 'PROGRAMMER' as JobTitleName) x
    left join JobTable j on j.JobTitleName = x.JobTitleName
where
    j.JobTitleName is null

不能在
insert
中使用
where
子句,但可以使用查询作为insert的源,并且可以使用
where

使用
左联接
加入
作业表
,这样,如果作业标题已存在,则可以使查询返回零记录:

insert into
    JobTable (JobTitleName)
select
    x.Title
from
    (select 'PROGRAMMER' as JobTitleName) x
    left join JobTable j on j.JobTitleName = x.JobTitleName
where
    j.JobTitleName is null


您是否尝试过作业标题名不在的位置(选择…)?再看看你的查询,它真的没有意义。您想做什么?
INSERT
没有
WHERE
子句(作为-您指定的行)(通过提供值或
SELECT
语句)正在插入-所以不要提供不想插入的值…如果需要where子句,则需要运行完整的SELECT语句,而不要使用values关键字。编写一个包含所需记录的SELECT查询,然后将INSERT添加到上面的行中。可能会将JobTitleName作为主键。。。这样,您就不必担心复制它,因为数据库不允许您复制。您是否尝试过
JobTitleName不在其中(选择…)
?再看看你的查询,它真的没有意义。您想做什么?
INSERT
没有
WHERE
子句(作为-您指定的行)(通过提供值或
SELECT
语句)正在插入-所以不要提供不想插入的值…如果需要where子句,则需要运行完整的SELECT语句,而不要使用values关键字。编写一个包含所需记录的SELECT查询,然后将INSERT添加到上面的行中。可能会将JobTitleName作为主键。。。这样,您就不必担心复制它,因为数据库不允许您复制。您是否尝试过
JobTitleName不在其中(选择…)
?再看看你的查询,它真的没有意义。您想做什么?
INSERT
没有
WHERE
子句(作为-您指定的行)(通过提供值或
SELECT
语句)正在插入-所以不要提供不想插入的值…如果需要where子句,则需要运行完整的SELECT语句,而不要使用values关键字。编写一个包含所需记录的SELECT查询,然后将INSERT添加到上面的行中。可能会将JobTitleName作为主键。。。这样,您就不必担心复制它,因为数据库不允许您复制。您是否尝试过
JobTitleName不在其中(选择…)
?再看看你的查询,它真的没有意义。您想做什么?
INSERT
没有
WHERE
子句(作为-您指定的行)(通过提供值或
SELECT
语句)正在插入-所以不要提供不想插入的值…如果需要where子句,则需要运行完整的SELECT语句,而不要使用values关键字。编写一个包含所需记录的SELECT查询,然后将INSERT添加到上面的行中。可能会将JobTitleName作为主键。。。那你就不用担心复制了,因为数据库不会让你复制的。我就知道我在画空白。我使用:如果不存在(从CACDashboardsJobTitle x中选择JobTitleName,其中x.JobTitleName='JOE TEST')插入CacDashboardsJobTitlename(JobTitleName)值('JOE TEST'),我知道我画的是空白。我使用:如果不存在(从CACDashboardsJobTitle x中选择JobTitleName,其中x.JobTitleName='JOE TEST')插入CacDashboardsJobTitlename(JobTitleName)值('JOE TEST'),我知道我画的是空白。我使用:如果不存在(从CACDashboardsJobTitle x中选择JobTitleName,其中x.JobTitleName='JOE TEST')插入CacDashboardsJobTitlename(JobTitleName)值('JOE TEST'),我知道我画的是空白。我使用:如果不存在(从CACDashboardsJobTitle x中选择JobTitle名称,其中x.JobTitle名称='JOE TEST')插入CACDashboardsJobTitle(JobTitle名称)值('JOE TEST'))