C J*_*C J 5 sql sql-server asp.net ado.net
string sqlInsert = "Insert into account_details(
account_number,
account_type,
transfer_access_code,
account_balance,
customer_id)
SELECT
account_number,
account_type,
transfer_access_code,
account_balance,
customer_id
from customer_details";
Run Code Online (Sandbox Code Playgroud)
此查询仅从客户详细信息(table1)中获取数据,并将其插入到其他table2中(account_details)
当第一次触发此查询时,它可以正常工作
但是当第二次触发时它显示错误违反PRIMARY KEY约束'PK_account_details'.无法在对象'dbo.account_details'中插入重复键.
任何想法跳过(account_details)table1中的现有数据并在下一行中插入新数据
使用a LEFT JOIN
允许您排除account details
表中已存在的所有行.替代方案(可能更快)是使用a NOT EXISTS
.
用一个 LEFT JOIN
INSERT INTO account_details (
account_number
, account_type
, transfer_access_code
, account_balance
, customer_id)
SELECT account_number
, account_type
, transfer_access_code
, account_balance
, customer_id
FROM customer_details cd
LEFT OUTER JOIN account_details ad ON ad.Account_number = cd.account_number
WHERE ad.account_number IS NULL
Run Code Online (Sandbox Code Playgroud)
用一个 NOT EXISTS
INSERT INTO account_details (
account_number
, account_type
, transfer_access_code
, account_balance
, customer_id)
SELECT account_number
, account_type
, transfer_access_code
, account_balance
, customer_id
FROM customer_details cd
WHERE NOT EXISTS (
SELECT *
FROM account_details
WHERE account_number = cd.account_number)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
694 次 |
最近记录: |