SQL Server插入,但不从表中选择
我想使用以下命令将一些人插入用户表:SQL Server插入,但不从表中选择,sql,sql-server,Sql,Sql Server,我想使用以下命令将一些人插入用户表: INSERT INTO [MyTable] (col2, col3) VALUES ('Jim', 'Bob'), ('Stinky', 'Pete'), ('Old', 'Frank') 如果已经存在ID列,我不希望输入这些条目,但是这里的唯一性应该由这两列的组合决定 如果我从表格中选择这些值,我想: INSERT INTO [MyTable] (col2, col3) SELECT [Name1], [Name2]
INSERT INTO [MyTable] (col2, col3)
VALUES ('Jim', 'Bob'),
('Stinky', 'Pete'),
('Old', 'Frank')
如果已经存在ID列,我不希望输入这些条目,但是这里的唯一性应该由这两列的组合决定
如果我从表格中选择这些值,我想:
INSERT INTO [MyTable] (col2, col3)
SELECT [Name1], [Name2]
FROM [ExistingTable]
EXCEPT
SELECT [col2], [col3]
FROM [MyTable]
那么,当我的数据不在表中时,如何执行此EXCEPT子句呢?您可以将cte与not exists一起使用:
您可以在不存在的情况下使用cte:
首先,您应该让数据库验证唯一性:
create unique index unq_mytable_id on mytable(id);
如果id已经声明为主键,那么就不需要这样做了——应该是这样的
然后,您可以使用以下值包括一个列表:
当然,“不存在”也可以使用,但这更接近原始查询。首先,您应该让数据库验证唯一性:
create unique index unq_mytable_id on mytable(id);
如果id已经声明为主键,那么就不需要这样做了——应该是这样的
然后,您可以使用以下值包括一个列表:
当然,“不存在”也可以使用,但这更接近您最初的查询。@jamheadart。是的。不喜欢从表t中选择1-我在2008年,我想知道这是否是一个问题。@jamheadart。我修复了表名和别名。这应该有用。@jamheadart。是的。不喜欢从表t中选择1-我在2008年,我想知道这是否是一个问题。@jamheadart。我修复了表名和别名。这应该行的,是的!我知道我去年用过类似的东西,但我就是搞不懂什么是危险的语法,所以一直在兜圈子。谢谢是的,第1列是主要的关键!我知道我去年用过类似的东西,但我就是搞不懂什么是危险的语法,所以一直在兜圈子。谢谢是的,列1是主键Id
INSERT INTO [MyTable] (col2, col3)
SELECT v.*
FROM (VALUES ('Jim','Bob'), ('Stinky','Pete'), ('Old','Frank')
) v(col2, col3)
EXCEPT
SELECT col2, col3
FROM mytable;