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
)
我想将记录插入 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
)