相关疑难解决方法(0)

如果不存在SQL Server插入最佳实践

我有一个Competitions结果表,一方面保存团队成员的名字和他们的排名.

另一方面,我需要维护一个独特的竞争对手名称表:

CREATE TABLE Competitors (cName nvarchar(64) primary key)
Run Code Online (Sandbox Code Playgroud)

现在我在第一个表中有大约200,000个结果,当竞争对手表空时,我可以执行此操作:

INSERT INTO Competitors SELECT DISTINCT Name FROM CompResults
Run Code Online (Sandbox Code Playgroud)

查询只需要大约5秒钟就可以插入大约11,000个名称.

到目前为止,这不是一个关键应用程序,因此我可以考虑每月截断一次竞争对手表,当我收到大约10,000行的新竞争结果时.

但是,当新的和现有的竞争对手增加新的结果时,最佳做法是什么?我不想截断现有的竞争对手表

我只需要为新的竞争对手执行INSERT语句,如果它们存在则不执行任何操作.

sql-server insert-update

148
推荐指数
5
解决办法
32万
查看次数

将行从一个表复制到另一个表,忽略重复

我有2个表(srcTable1和destTable)具有相同的模式.我试图将所有行从srcTable复制到destTable并忽略重复项.我以为我可以添加一个带有子查询的WHERE子句,该子查询只给出不重复的行.但是,它似乎不起作用.我没有插入或选择任何行.

INSERT INTO destTable
SELECT * FROM srcTable
WHERE NOT EXISTS(SELECT * FROM destTable)
Run Code Online (Sandbox Code Playgroud)

我意识到我可以这样做:

INSERT INTO destTable
SELECT * FROM srcTable
WHERE MyKey IN (SELECT MyKey FROM destTable)
Run Code Online (Sandbox Code Playgroud)

但是,我的表有多个键,我想不出你如何用多个键做到这一点.

知道我做错了什么,或者你有更好的想法吗?

sql t-sql

36
推荐指数
4
解决办法
11万
查看次数

标签 统计

insert-update ×1

sql ×1

sql-server ×1

t-sql ×1