如果在 BulkInsert 期间插入该记录,则更新该记录的某些列
Update some columns of a record if that record is being inserted during a BulkInsert
Table 在数据库上:
TABLE 相册
- ID_ON_DISCOGS(唯一)
- ARTIST_ID
- LABEL_ID
我必须将记录批量插入此 table。
问题是有时批量插入可能会尝试插入一条 ID_ON_DISCOGS 已经存在的记录。
在这种情况下,我想用新值更新 ARTIST_ID 或 LABEL_ID 字段。
示例:
专辑记录已在数据库中:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | 345 | null |
:------------------------------------:
专辑记录我尝试插入:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | null | 567 |
:------------------------------------:
我想达到的成绩记录:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | 345 | 567 |
:------------------------------------:
可能是适合内容提供商的解决方案。
这将更新所有具有匹配 ID_ON_DISCOGS 的记录。
REPLACE INTO ALBUM
(ID_ON_DISCOGS, ARTIST_ID, LABEL_ID)
SELECT src.ID_ON_DISCOGS, src.ARTIST_ID, src.LABEL_ID
FROM ImportTable src
INNER JOIN ALBUM dest
ON src.ID_ON_DISCOGS = dest.ID_ON_DISCOGS
下一个查询将插入 table 中没有的剩余记录。
INSERT INTO ALBUM
SELECT imp.ID_ON_DISCOGS
,imp.ARTIST_ID
,imp.LABEL_ID
FROM ImportTable imp
WHERE imp.ID_ON_DISCOGS NOT IN (SELECT ID_ON_DISCOGS FROM ALBUM)
就我个人而言,我会先执行批量插入。完成后,我将执行更新语句。也许尝试用 CTE 更新?参见 mobsites 的回答,例如:SQL UPDATE row Number
Table 在数据库上:
TABLE 相册 - ID_ON_DISCOGS(唯一) - ARTIST_ID - LABEL_ID
我必须将记录批量插入此 table。
问题是有时批量插入可能会尝试插入一条 ID_ON_DISCOGS 已经存在的记录。
在这种情况下,我想用新值更新 ARTIST_ID 或 LABEL_ID 字段。
示例:
专辑记录已在数据库中:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | 345 | null |
:------------------------------------:
专辑记录我尝试插入:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | null | 567 |
:------------------------------------:
我想达到的成绩记录:
|ID_ON_DISCOGS | ARTIST_ID | LABEL_ID|
:------------------------------------:
|123 | 345 | 567 |
:------------------------------------:
可能是适合内容提供商的解决方案。
这将更新所有具有匹配 ID_ON_DISCOGS 的记录。
REPLACE INTO ALBUM
(ID_ON_DISCOGS, ARTIST_ID, LABEL_ID)
SELECT src.ID_ON_DISCOGS, src.ARTIST_ID, src.LABEL_ID
FROM ImportTable src
INNER JOIN ALBUM dest
ON src.ID_ON_DISCOGS = dest.ID_ON_DISCOGS
下一个查询将插入 table 中没有的剩余记录。
INSERT INTO ALBUM
SELECT imp.ID_ON_DISCOGS
,imp.ARTIST_ID
,imp.LABEL_ID
FROM ImportTable imp
WHERE imp.ID_ON_DISCOGS NOT IN (SELECT ID_ON_DISCOGS FROM ALBUM)
就我个人而言,我会先执行批量插入。完成后,我将执行更新语句。也许尝试用 CTE 更新?参见 mobsites 的回答,例如:SQL UPDATE row Number