grt*_*ibo 2 sql-server insert distinct-values
我正在尝试从视图中将唯一值插入到表中。我有一张如下表:“fromView”在护照中没有唯一约束
id | passport | name | surname | address
1 44543 John Smith xxxxx
2 10001 Mike Thomps avasfa
3 10001 Mike Thomps avasfa
4 10001 Mike Thomps avasfa
5 14221 Robert Martinez lkjij3
Run Code Online (Sandbox Code Playgroud)
我的“toTable”具有相同的数据结构,但在护照列中有一个唯一的约束。
我的插入查询是这样的:
INSERT into toTable (id, passport, name, surname, address)
SELECT (id, passport, name, surname, address)
FROM fromView a
WHERE passport IS NOT NULL AND NOT EXISTS (SELECT *
FROM toTable b
WHERE b.passport = a.passport)
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:
无法在具有唯一索引“toTable_Passport_Unique”的对象“toTable”中插入重复的键行。
所以,我不知道如何将唯一值插入到我的表中。提前致谢
您可以通过运行以下查询获取具有多个条目的所有护照的列表:
Select Passport, Count (*) NumEntries
From fromTable
Group by Passport
Having Count (*) > 1
Run Code Online (Sandbox Code Playgroud)
然后您必须决定如何处理这些重复的行。运行以下查询以查看这些重复项的完整行:
Select *
From fromTable
Where Passport In
(
Select Passport, Count (*) NumEntries
From fromTable
Group by Passport
Having Count (*) > 1
)
Order by Passport
Run Code Online (Sandbox Code Playgroud)
假设您决定使用为每本护照插入的最新行(意味着 Id 将是最高的),此查询将为您提供所需的数据。
Select T1.*
From fromTable T1
Where Id In
(
Select Max (Id) Id
From fromTable
Group by Passport
)
Run Code Online (Sandbox Code Playgroud)
您可以插入使用
INSERT into toTable (id, passport, name, surname, address)
Select T1.*
From fromTable T1
Where Id In
(
Select Max (Id) Id
From fromTable
Group by Passport
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17634 次 |
| 最近记录: |