SQL 如果某个名称不在列中则插入

SQL insert if certain name not in a column

我想将记录插入 table:

UserType UserName Valid
Type1 Name1 True

目前我正在使用以下 sql 代码:

insert into table_name
select 'certain type', 'a user''s name', 1

但如果 a user's name 已经被记录在 table 中,那将导致 UserName 列中的重复名称。

换句话说,如果 a user's name 没有出现在 UerName 列中,我想插入一行记录。我怎样才能做到这一点?

如果我对你的理解正确,你想在 table.

的列中强制执行唯一值

在这种情况下,您可以在列上使用 unique 约束,或者如果是 MSSQL (T-SQL),您可以这样做:

IF NOT EXISTS(SELECT TOP 1 1 FROM table_name WHERE column_name='a user''s name') BEGIN
   INSERT INTO table_name (UserType, UserName, VALID) VALUES ('certain type', 'a user''s name', 1)
END

您可以添加一个not exists条件:

insert into t(usertype, username, valid)
select *
from (values
    ('type1', 'name1', 1),
    ('type2', 'name2', 2)
) as to_insert(usertype, username, valid)
where not exists (
    select 1
    from t
    where t.username = to_insert.username
)